C# 避免应用程序中模块的异常

C# 避免应用程序中模块的异常,c#,.net,wpf,design-patterns,architecture,C#,.net,Wpf,Design Patterns,Architecture,我正在开发一个包含其他团队开发的模块的应用程序,并使用MEF托管它。 问题是,当托管模块出现异常时,它会崩溃我的应用程序 显而易见的解决方案是,托管模块的开发团队将捕获所有异常,但这不会发生,因此我必须确保自己 我的想法是: 1) 创建两个独立的GUI线程。可能吗 2) 将托管模块作为单独的.exe文件运行,但以某种方式将其托管在我的应用程序中 任何帮助都将不胜感激 我认为最好的方法是设置一些测试,以验证您从其他团队使用的模块是否符合您的目的 除了这种明显但耗时的方法外,您还可以将事件处理程序附

我正在开发一个包含其他团队开发的模块的应用程序,并使用MEF托管它。 问题是,当托管模块出现异常时,它会崩溃我的应用程序

显而易见的解决方案是,托管模块的开发团队将捕获所有异常,但这不会发生,因此我必须确保自己

我的想法是:

1) 创建两个独立的GUI线程。可能吗

2) 将托管模块作为单独的.exe文件运行,但以某种方式将其托管在我的应用程序中

任何帮助都将不胜感激


我认为最好的方法是设置一些测试,以验证您从其他团队使用的模块是否符合您的目的


除了这种明显但耗时的方法外,您还可以将事件处理程序附加到Application.dispatchernhandledexception,并优雅地处理导入模块中的异常。您应该能够在事件参数的exception.source属性中找到异常的源。

首先,您应该实现
应用程序。DispatcherUnandledException
事件,有关详细信息,请单击

完成此操作后,您应该与其他团队交谈,以提高其模块的健壮性

编辑:


或者你可以跟着这个。但是我会尝试提高健壮性。

谢谢,但是DispatcherUnhandledException只处理Gui线程中的异常,而不处理后台线程中的异常。(这对大多数例外情况都有好处,但不是对所有例外情况都有好处)那么就按照我的第二个建议去做吧。处理线程的异常不应该是您的任务,这些异常是在另一个模块中启动的。如果你继续解决这些问题,几个月后你可能会面临一些严重的问题。不要治愈症状,消除原因!