我正在开发包含其他团队开发的模块的应用程序,并使用MEF托管它。 问题是,当托管模块有异常时,它会折叠我的应用程序。避免应用程序中的模块出现异常
显而易见的解决方案是,托管模块的开发团队将捕获所有的异常,但没有发生,所以我必须确保自己。
我的思路:
1)创建2个分离GUI线程。可能吗 ?
2)将托管模块作为分离的.exe文件运行,但以某种方式托管在我的应用程序中。
任何帮助将不胜感激。
我正在开发包含其他团队开发的模块的应用程序,并使用MEF托管它。 问题是,当托管模块有异常时,它会折叠我的应用程序。避免应用程序中的模块出现异常
显而易见的解决方案是,托管模块的开发团队将捕获所有的异常,但没有发生,所以我必须确保自己。
我的思路:
1)创建2个分离GUI线程。可能吗 ?
2)将托管模块作为分离的.exe文件运行,但以某种方式托管在我的应用程序中。
任何帮助将不胜感激。
我认为最好的办法就是建立一些测试,以验证您的模块从你的目的的其他团队工作中使用。
除了这种明显但费时的方法之外,您还可以将事件处理程序附加到Application.DispatcherUnhandledException,并正确处理导入模块中的异常。您应该能够在事件args的Exception.Source属性中找到异常的来源。
看到我对@DHN的答案 – Erez 2011-03-03 09:26:10
谢谢,但DispatcherUnhandledException仅处理Gui线程中的异常,而不处理后台线程中的异常。 (这对大多数例外情况都有好处,但不适用于所有情况) – Erez 2011-03-03 09:25:34
那么请遵循我的第二条建议。处理在另一个模块中启动的线程异常不应该是您的任务。如果你一直在解决这些问题,你可能会在几个月内遇到一些严重的问题。不要治愈症状,消除原因! – DHN 2011-03-03 09:31:34
提供了替代解决方案。看我的编辑。 – DHN 2011-03-03 09:36:01