PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Blocage de l'application après une certaine durée d'inactivité
Blocage de l'application après une certaine durée d'inactivité
Débuté par NiceBel, 21 nov. 2016 17:09 - 9 réponses
Membre enregistré
518 messages
Popularité : +7 (7 votes)
Posté le 21 novembre 2016 - 17:09
Bonjour,
Mon application desktop développée avec windev accède via un timer chaque 3 secondes à une base de donnée HFSQL C/S sur le même poste, après une certaine durée d'inactivité, quand j'essaie de travailler avec elle, elle se plante quoi qu'il soit le bouton sur lequel j'ai appuyé, avec plus de clics la fenêtre windows qui te donne le choix soit d'attendre ou de fermer le programme paraît !! si je choisi d'attendre il paraît si comme si je vais attendre jusqu'à l'infini.
Avez vous des idées des propositions sur comment éviter ce plantage? j'ai pensé à la gestion de la mise en veille, ....
Merci.
Membre enregistré
1 935 messages
Popularité : +53 (65 votes)
Posté le 21 novembre 2016 - 17:13
Bonjour,

Quel code utilises-tu ?

--
Bon dev,
Jean-Pierre
Membre enregistré
518 messages
Popularité : +7 (7 votes)
Posté le 21 novembre 2016 - 18:05
Si j'ai bien compris votre question: c'est un code Wlanguage.
Plus de détaille: le timer est appelé dans le traitement initialisation de la fenêtre principale de l'application avec une fréquence de 3 secondes.
il consulte tout simplement une BDD HFSQL C/S (trois fichiers) moyennant la boucle POUR TOUT sans appel à la fonction houvreconnexion.
L'application marche bien au lancement, c'est après une certaine durée d'inactivité qu'elle se plante !!

POUR TOUT "Le fichier1"
si ....
fin
POUR TOUT "Le fichier2"
si ....
fin
POUR TOUT "Le fichier3"
si ....
fin

Merci encor !!
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 22 novembre 2016 - 04:11
Bonjour,

Question bête, pourquoi ne pas créer un service windows qui lui ne s'arrête pas.

Sinon il faudrait peut-être vérifier la mise en veille de la carte réseau dans les options d'alimentation.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Posté le 22 novembre 2016 - 09:17
Bonjour NiceBel,

A tout hasard, as tu vérifié que le traitement de ton timer soit bien inférieur à sa fréquence d'appel.

Ton problème ressemble à un débordement de pile.

Fred
Membre enregistré
518 messages
Popularité : +7 (7 votes)
Posté le 22 novembre 2016 - 13:07
Merci Fred, Merci Philip,

En faite le timer lit sur la BDD et attend l'arrivée de nouveaux données ou bien la modification des données existants, Je pense au triggers. Y a t'il une sorte de gestion de la mise en veille de l'application elle même qu'il faut appliquer, non?

Pour éviter le dépassement de la pile, j'ai utilisé un variable global pour le test:
SI gbAttendfintimer = 0 ALORS
gbAttendfintimer = 1
...
gbAttendfintimer = 0
FIN
Posté le 22 novembre 2016 - 13:16
Bonjour
J'ai peut être mal compris ton code, mais toutes les 3 secondes tu vas lire 3 fichiers avec POUR TOUT...
simplement pour savoir si une modif a été apportée ?
Pourquoi dans ce cas ne pas utiliser Hversion ?
ElPato
Membre enregistré
518 messages
Popularité : +7 (7 votes)
Posté le 24 novembre 2016 - 11:10
Merci Elpato,

Après l'utilisation de hversion il y a une amélioration sauf que l'application se plante toujours après une certaine durée d'inactivité, j'ai aussi augmenté la fréquence du timersys à 5s ...
Le plantage je crois que c'est dû à la connexion répétée au serveur (installé sur le même poste) il n'y a pas un moyen comment améliorer la connexion au serveur? Aussi il n'y a peut être pas un autre moyen comment faire en sorte que l'ordinateur se concentre juste sur mon application et qu'il néglige les autres services?

Merci bien.
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 24 novembre 2016 - 12:11
Bonjour,

Faire un pour tout sur 3 fichiers juste pour aller vérifier ce qui a été modifié c'est qu'il y a un problème de conception. N'as tu pas dans tes fichiers l'information de la date et heure de dernière modif ?

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Posté le 24 novembre 2016 - 12:39
Il y a un problème de conception, mais il y a surtout un problème de méthodologie dans la phase de debug.

On peut consulter une boule de cristal, et essayer d'imaginer où est le problème dans ton traitement. mais ce n'est pas une démarche très pragmatique.
Ca paraîtrait plus sérieux de partager ton code.
Ou bien, ce que tu peux faire, c'est de modifier ta procédure, laisser uniquement la partie CONNEXION / LECTURE et voir si là aussi ça plante.
Tu peux aussi tester les codes retour de chacune des tes fonctions, et écrire plein de petites informations dans un fichier LOG, avec pour chaque action, un timestamp (heure/minute/seconde/millièmes de secondes) . Tu pourras ensuite analyser ce fichier LOG, pour tenter de comprendre ce qui ne va pas.