2

J'utilise un composant telnet .net gratuit (De.Mud.Telnet), qui a plusieurs méthodes asynchrones que vous pouvez appeler, et le composant déclenche des événements lorsque des choses se produisent. Mon problème est que le composant lance une exception et je ne sais pas comment l'attraper. Il n'y a pas d'événement d'exception, et l'exception n'est pas levée par mon appel de méthode. J'utilise ce composant à partir d'un service et je ne sais pas comment intercepter l'exception.Comment attraper l'exception du fil?

+0

Il pourrait créer son propre thread et lancer là. Vous devez capturer toutes les exceptions non interceptées sur votre AppDomain. –

Répondre

1

Le code source semble être available here. Pas sûr bien sûr, mais cela correspond certainement à la description de votre problème. Qui que ce soit qui a écrit ce code n'avait aucune idée du fonctionnement des exceptions. Les rappels sont le problème, quand quelque chose ne va pas, ils lancent une exception ApplicationException. Ces exceptions sont inaccessibles, les rappels sont effectués sur un thread threadpool.

Cela pourrait avoir fonctionné quelque peu dans les jours .NET 1.x, il cesserait simplement de fonctionner correctement au lieu d'abandonner votre programme. Au moins, vous êtes en avance, vous savez maintenant que cela ne fonctionne pas correctement. Étant donné que le code est très peu et que la façon dont cela fonctionne est essentiellement unfixable, je vous recommande fortement de ne pas utiliser cela.

Découvrez nsoftware.com pour une société qui vend une véritable bibliothèque.

+0

Merci. J'ai trouvé ce code et fait les changements appropriés. – Jeremy

1

Vérifiez la dernière partie de la page this, cela fait partie d'un bon guide d'enfilage .NET auquel je me réfère souvent pour l'aide au filetage.

+0

C'est très utile en effet! – Skurmedel

+0

Malheureusement, je n'ai pas écrit le composant, donc je ne peux pas ajouter la gestion des threads. – Jeremy

+0

désolé qui aurait dû lire, "ne peut pas gérer la gestion des exceptions dans la méthode asynchrone." – Jeremy