[Stand-By]UnhandledException depuis un thread séparé
UPDATE :
En fait, je pense que j'ai tourné un peu trop en rond, le problème ne semble pas venir de la DLL mais du fait que j'utilise plusieurs threads, certains affichant des formulaires et sur ces formulaires des erreurs peuvent apparaître.
En gros, mon problème ne peu pas être résumé à ce que j'ai décrit dans le message. Je préfère le laisser en stand-by pour l'instant et quand je clarifie ma situation, je relancerai la question.
Bonjour à tous,
J'ai passé ma journée à m'arracher les cheveux sur un sujet dont la réponse est probablement simple :
Contenu simplifié de la solution :
- 1 projet principal (WinForms),
- 1 DLL
Contexte :
Dans cette DLL, il se peut que des exceptions non gérées soient rencontrées, je sais que c'est pas bien, mais admettons.
Dans le projet principal, un log fait maison enregistre certains événements dont les plantages.
Pour les plantages, j'utilisais l'événements MyApplication.UnhandledException et ça marchait très bien en lançant depuis VS2017.
Cet événement récupérait toutes les exceptions non gérées, peu importe leur provenance.
Problématique :
Cela ne fonctionne pas en exécutant directement l'exécutable. Seules les erreurs du projet principal sont récupérées, pour la DLL j'ai directement un message du type :
Consultez la fin de ce message pour plus de détails sur l'appel du débogage
juste-à-temps (JIT) à la place de cette boîte de dialogue.
Ce que j'ai essayé de faire :
1) Passer par :
Code:
1 2
| AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf XXX
AddHandler System.Windows.Forms.Application.ThreadException, AddressOf YYY |
2) Désactiver le Framework de l'application et faire un module Main avec
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Public Sub Main()
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf XXX
AddHandler Application.ThreadException, AddressOf YYY
MyApplication_Startup()
Try
Application.Run(New FormAccueil)
Catch Ex As Exception
MsgBox("Test")
End Try
End Sub |
Avec ou sans le Try/Catch autour du Application.Run, rien n'y fait...
Franchement, j'ai l'impression d'avoir fait 3 fois le tour d'Internet et je sature pas mal. Si quelqu'un peut m'aider, ce serait vraiment top.
Merci d'avance !
Quentin.