Que faire quand la ligne Le programme 'Votre executable.exe: Managé' s'est arrêt

Résolu
DaniMelo59 Messages postés 5 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 21 août 2017 - 15 oct. 2008 à 13:42
DaniMelo59 Messages postés 5 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 21 août 2017 - 15 oct. 2008 à 15:13
Bonjour,

j'espère que vous pourrez m'apporter votre aide.

je développe une iHM en C# multi threading.
je suis en train de débogger sous Visual Studio 2005
le déboggeur est lancé.
je mets fin à mon application. le code exécute la ligne Application.Exit().


et pourtant, mon déboggeur ne se ferme pas. il doit y avoir des processus qui tourne. j'ai développé un composant qui enregistre les threads que je lance. et à la fin de mon application. je liste les threads de mon processus. Par contren je n'ai que les id.
voici les traces


******************       16       ******************
Thread :ThCache0-Alive :True-State :WaitSleepJoin-id=35(0x23)
Thread :ThCache1-Alive :True-State :WaitSleepJoin-id=25(0x19)
Thread :ThCache2-Alive :True-State :WaitSleepJoin-id=26(0x1a)
Thread :ThCache3-Alive :True-State :WaitSleepJoin-id=31(0x1f)
Thread :ThEnregistrement0-Alive :True-State :WaitSleepJoin-id=12(0xc)
Thread :ThEnregistrement1-Alive :True-State :WaitSleepJoin-id=15(0xf)
Thread :ThEnregistrement2-Alive :True-State :WaitSleepJoin-id=18(0x12)
Thread :ThEnregistrement3-Alive :True-State :WaitSleepJoin-id=21(0x15)
Thread :ThIHM0-Alive :True-State :WaitSleepJoin-id=11(0xb)
Thread :ThIHM1-Alive :True-State :WaitSleepJoin-id=14(0xe)
Thread :ThIHM2-Alive :True-State :WaitSleepJoin-id=17(0x11)
Thread :ThIHM3-Alive :True-State :WaitSleepJoin-id=20(0x14)
Thread :ThSupervision0-Alive :True-State :WaitSleepJoin-id=13(0xd)
Thread :ThSupervision1-Alive :True-State :WaitSleepJoin-id=16(0x10)
Thread :ThSupervision2-Alive :True-State :WaitSleepJoin-id=19(0x13)


tous les threads sont démarrés et tournent. l'id du thread correspond à l'appel de Thread.ManagedThreadId.
Rien à voir avec l'id du thread des traces qui suivent.


je clique sur la fermeture de mon application. voici les traces :


 STOP THREAD CACHE NON VALLOR 0


Le thread 0x1010 s'est arrêté avec le code 0 (0x0)


 STOP THREAD SUPERVISION 0


Le thread 0x7e0 s'est arrêté avec le code 0 (0x0).


 STOP THREAD IHM NUMERO 0


Le thread 0x614 s'est arrêté avec le code 0 (0x0).


 STOP THREAD SUPERVISION ENREGISTREMENT 0


Le thread 0xa64 s'est arrêté avec le code 0 (0x0).


 STOP THREAD CACHE NON VALLOR 1


Le thread 0x1210 s'est arrêté avec le code 0 (0x0).


 STOP THREAD IHM NUMERO 1


Le thread 0xebc s'est arrêté avec le code 0 (0x0).


 STOP THREAD SUPERVISION ENREGISTREMENT 1


Le thread 0xee4 s'est arrêté avec le code 0 (0x0).


 STOP THREAD SUPERVISION 1


Le thread 0x11fc s'est arrêté avec le code 0 (0x0).


 STOP THREAD IHM NUMERO 2


Le thread 0x1664 s'est arrêté avec le code 0 (0x0).


 STOP THREAD SUPERVISION 2


Le thread 0x1758 s'est arrêté avec le code 0 (0x0).


 STOP THREAD SUPERVISION ENREGISTREMENT 2


Le thread 0x158c s'est arrêté avec le code 0 (0x0).


 STOP THREAD CACHE VALLOR NUMERO 2


Le thread 0xe7c s'est arrêté avec le code 0 (0x0).


 STOP THREAD CACHE NON VALLOR 3


 STOP THREAD SUPERVISION 3


Le thread 0x11f8 s'est arrêté avec le code 0 (0x0).


 STOP THREAD SUPERVISION ENREGISTREMENT 3


Le thread 0x13d0 s'est arrêté avec le code 0 (0x0).


 STOP THREAD IHM NUMERO 3


Le thread 0x1510 s'est arrêté avec le code 0 (0x0).
Le thread 0xba0 s'est arrêté avec le code 0 (0x0).


DERNIERES TRACES AVANT EXIT
******************       16       ******************
Thread :ThCache0-Alive :False-State :Stopped
Thread :ThCache1-Alive :False-State :Stopped
Thread :ThCache2-Alive :False-State :Stopped
Thread :ThCache3-Alive :False-State :Stopped
Thread :ThEnregistrement0-Alive :False-State :Stopped
Thread :ThEnregistrement1-Alive :False-State :Stopped
Thread :ThEnregistrement2-Alive :False-State :Stopped
Thread :ThEnregistrement3-Alive :False-State :Stopped
Thread :ThIHM0-Alive :False-State :Stopped
Thread :ThIHM1-Alive :False-State :Stopped
Thread :ThIHM2-Alive :False-State :Stopped
Thread :ThIHM3-Alive :False-State :Stopped
Thread :ThSupervision0-Alive :False-State :Stopped
Thread :ThSupervision1-Alive :False-State :Stopped
Thread :ThSupervision2-Alive :False-State :Stopped
Thread :ThSupervision3-Alive :False-State :Stopped


*******   26  ***********
process: SIMRVLF.vshost,  id: 5960
 thread:6044-thread state: Wait-pt.WaitReason : UserRequest
 thread:5668-thread state: Wait-pt.WaitReason : UserRequest
 thread:5036-thread state: Wait-pt.WaitReason : UserRequest
 thread:200-thread state: Wait-pt.WaitReason : LpcReceive
 thread:3612-thread state: Wait-pt.WaitReason : ExecutionDelay
 thread:4372-thread state: Wait-pt.WaitReason : LpcReceive
 thread:4012-thread state: Wait-pt.WaitReason : UserRequest
 thread:4492-thread state: Wait-pt.WaitReason : UserRequest
 thread:5348-thread state: Wait-pt.WaitReason : UserRequest
 thread:6140-thread state: Wait-pt.WaitReason : UserRequest
 thread:5764-thread state: Running-pt.WaitReason : No wait
 thread:4200-thread state: Wait-pt.WaitReason : UserRequest
 thread:3312-thread state: Wait-pt.WaitReason : ExecutionDelay
 thread:5140-thread state: Wait-pt.WaitReason : UserRequest
 thread:532-thread state: Wait-pt.WaitReason : UserRequest
 thread:3404-thread state: Wait-pt.WaitReason : UserRequest
 thread:4940-thread state: Wait-pt.WaitReason : UserRequest
 thread:5100-thread state: Wait-pt.WaitReason : EventPairLow
 thread:6076-thread state: Wait-pt.WaitReason : ExecutionDelay
 thread:3064-thread state: Wait-pt.WaitReason : UserRequest
 thread:3560-thread state: Wait-pt.WaitReason : UserRequest
 thread:5312-thread state: Wait-pt.WaitReason : UserRequest
 thread:3108-thread state: Wait-pt.WaitReason : ExecutionDelay
 thread:2832-thread state: Wait-pt.WaitReason : UserRequest
 thread:3016-thread state: Wait-pt.WaitReason : ExecutionDelay
 thread:6128-thread state: Wait-pt.WaitReason : UserRequest
*************************
Le thread 0x14e4 s'est arrêté avec le code 0 (0x0).
Le thread 0x1684 s'est arrêté avec le code 0 (0x0).
Le thread 0xcf0 s'est arrêté avec le code 0 (0x0).


Pourquoi les autres threads ne sont pas arrétés ? puis-je les arrêter ? Est-ce normal de forcer l'arrêt ? comment retrouver le nom d'un thread à partir de son id ?
est-ce normal que le déboggeur ne s'arrête pas ?




la ligne  Le programme '[5960] SIMRVLF.vshost.exe: Managé' s'est arrêté avec le code 0 (0x0). ne s'affiche que si je stoppe le déboggeur.


merci par avance pour vos pistes de recherche.

1 réponse

DaniMelo59 Messages postés 5 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 21 août 2017
15 oct. 2008 à 15:13
j'ai trouvé mon bug.
j'utilisais une dll d'acquisition de données qui toutes les minutes appelle une méthode asychrone si le module d'acquisition est démarré.

je stoppais le module d'acquisition (dans le thread courant) alors que la méthode asynchone était en cours d'exécution (dans un thread séparé ) dans laquelle je demandais à ce module de me fournir les données acquises.

de plsu , je n'appellais pas systèmatiquement la méthode Join() sur mes threads car je savais qu'ils allaient bien se terminer. Mais là encore, je mettais une variable à null dans le thread courant que j'utilisais cette variable dans un autre thread. maintenant, je fais un Join() sur cet autre thread avant de mettre ma variable à null.
3
Rejoignez-nous