2011-03-03 48 views
3

我正在开发包含其他团队开发的模块的应用程序,并使用MEF托管它。 问题是,当托管模块有异常时,它会折叠我的应用程序。避免应用程序中的模块出现异常

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

我的思路:

1)创建2个分离GUI线程。可能吗 ?

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

任何帮助将不胜感激。

enter image description here

回答

0

首先您应该执行Application.DispatcherUnhandledException事件,如需更多详细信息,请点击here

这样做后,你应该与其他团队谈谈,以提高其模块的健壮性。

编辑:

或者你也可以按照这个approach。但我会努力提高鲁棒性。

+0

谢谢,但DispatcherUnhandledException仅处理Gui线程中的异常,而不处理后台线程中的异常。 (这对大多数例外情况都有好处,但不适用于所有情况) – Erez 2011-03-03 09:25:34

+0

那么请遵循我的第二条建议。处理在另一个模块中启动的线程异常不应该是您的任务。如果你一直在解决这些问题,你可能会在几个月内遇到一些严重的问题。不要治愈症状,消除原因! – DHN 2011-03-03 09:31:34

+0

提供了替代解决方案。看我的编辑。 – DHN 2011-03-03 09:36:01

0

我认为最好的办法就是建立一些测试,以验证您的模块从你的目的的其他团队工作中使用。

除了这种明显但费时的方法之外,您还可以将事件处理程序附加到Application.DispatcherUnhandledException,并正确处理导入模块中的异常。您应该能够在事件args的Exception.Source属性中找到异常的来源。

+0

看到我对@DHN的答案 – Erez 2011-03-03 09:26:10

相关问题