2010-06-01 3 views
1

donc je suis tombé sur cet article intéressant sur la gestion des exceptions WPF: http://srtsolutions.com/public/item/251263WPF gestion des exceptions lors de son lancement à partir WinForms

cela fonctionne en déclarant gestionnaire DispatcherUnhandledException en XAML < nœud d'application >.

mais que se passe-t-il si une fenêtre WPF est lancée à partir de l'application des formulaires gagnants? Où puis-je déclarer un gestionnaire d'exception général?

Le problème est que lorsque WPF se bloque, il entraîne l'application WinForms entière avec elle.

* Éditer Et si au lieu de lancer la fenêtre WPF directement, j'ai lancé une "Application" qui a défini une fenêtre de démarrage? est-ce possible/conseillé?

Répondre

2

Joindre votre gestionnaire à l'événement <obj>.Dispatcher.UnhandledException, où <obj> est un contrôle WPF ou un autre DispatcherObject créé sur le même thread.

+0

comment vous pouvez réellement affecter le gestionnaire au répartiteur? UnhandledException n'en est pas vraiment une propriété .. –

+0

Ce n'est pas une propriété, mais un événement. Utilisez la syntaxe habituelle '+ ='. Consultez la documentation: http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.unhandledexception.aspx –

+0

mauvais choix de mots, je voulais dire que, cet événement n'est pas disponible sur mon répartiteur Windows objet. –

0

Je crois que les gestionnaires traditionnels d'exception « globales » pour Windows Forms s'appliquent ici:

crochet l'exception de fil comme la première ligne principale:

Application.ThreadException += new ThreadExceptionEventHandler(new ThreadExceptionHandler().ApplicationThreadException); 
+1

merci, qui est déjà implémenté. mais toute exception WPF nukes encore l'application winforms conteneur. –