Application Fantome

Résolu
Signaler
Messages postés
10
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
29 mai 2008
-
Messages postés
10
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
29 mai 2008
-
Bonjour, je débute en programmation et j'ai crée un fantome.

Je m'explique.

Lorsque je ferme mon application elle disparait de l'écran mais le processus reste toujours actif.
J'avais reglé le probleme avec un "end" lors du "unload_form" de mon form principale et ça à
fonctionné un temps mais le probleme est de retour et je suis a bout de ressource.

Merci à l'avance de votre aide
Beezzers

9 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
Evite End, c'est pas normal que tu aies a l'utiliser, ca montre un defaut dans la conception de ton projet...
étrange que ca ne le fasse qu'en .exe.

pas simple a debugger ce genre de choses, du coup...
ajoutes des MsgBox, pour tracer l'execution de la chose, et voir si en .exe tu reload pas la form malgré toi

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
Quand tu quittes ton programme, il te faut faire gaffe à tout fermer...
stopper les boucles, les timers

ça, c'est simple.
une fois le Unload Me appelé, il faut éviter de recharger la fenêtre... (c'est certainement ce qui se passe)

ajoute un point d'arret dans ton Form_Load et lance ton programme.
l'execution va logiquement se stopper sur ce point d'arret, rien d'alarmant ^^
maintenant, quitte ton programme
je pense que le point d'arret va de nouveau être déclenché: ta form est rechargée, mais ne sera pas affichée ; ton programme restera en cours d'execution.

qui est le coupable ?
pourquoi la form se recharge-t'elle ?

presse Ctrl+L (pile des appels) pour trouver le coupable.
une fois la Form déchargée, il ne faut plus faire reference aux controles et propriétés de celle-ci (logique, rien de tout cela n'existe encore, il faut recharger...)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
10
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
29 mai 2008

J'ai essayé le point d'arret dans form_load et le programme ne semble pas
repasser là car il s'arrete normallement.

J'ai cependant fait un autre test avec un cmd et seulement la comande "end"
L'application se ferme et le precessus disparait.

J'avais oublié de préciser que ce probleme n'arrive qu'avec le ".exe"
En dévelopement l'application semble fonctionner normallement.

Merci de ton aide Remfield, je vais prendre note de ce "truc" pour de
prochain debug.
Beezzers
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
Bonjour,

Pour ma part c'est quelque chose de très fréquent lorsqu'on laisse un thread s'executer après fermeture de la form sur VS2005.
A voir si tu en utilises

Bonne Prog
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
pas de multithread sous VB6, sinon, y'aurait pas ce genre de soucis (au contraire) : de fortes chances que le programme crash ^^

du coup, pas de fantome :p
Messages postés
10
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
29 mai 2008

Beezzers
Messages postés
10
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
29 mai 2008

 Le message ne semble pas avoir passé.

J'ai trouvé mon probleme, il venais d'un pop-up "Home-Made" qui se
chargais sur l'évenement "Form_Paint" pour rester au premier plan.
J'ai donc reglé le probleme de l'application fantome mais mon pop-up
se retrouve a l'arriere plan de ma form principale si je les appele de la
barre de tache.

Est-ce-que quelqu'un peut m'aider ??

Renfield, c'étais effectivement un défaut de conception, merci.

Beezzers
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
il faut décharger toutes tes forms, quand tu quitte ton programme.

tu peux même itérer et faire :

Do While Forms.Count
unload Forms(0)
Loop
Messages postés
10
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
29 mai 2008

Merci pour ce tip.


Tes conseil m'on beaucoup aidé



Beezzers