c# – 防止第三方组件的异常崩溃整个应用程序
发布时间:2020-12-15 06:48:17 所属栏目:百科 来源:网络整理
导读:我正在编写一个依赖于第三方DLL的多线程应用程序.我的问题是,当使用第三方库中的对象时,如果在运行时引发异常,我无法抓住它,并且它会起泡并杀死整个应用程序.我有许多不同的线程,每个使用自己的对象从这个第三方库,我需要使用该对象的副本能够捕获和处理异常
我正在编写一个依赖于第三方DLL的多线程应用程序.我的问题是,当使用第三方库中的对象时,如果在运行时引发异常,我无法抓住它,并且它会起泡并杀死整个应用程序.我有许多不同的线程,每个使用自己的对象从这个第三方库,我需要使用该对象的副本能够捕获和处理异常的线程.
根据我读过的内容,似乎很可能第三方库实际上是在自己的线程中,并允许未被捕获的异常. .NET 2.0行为允许这些异常终止整个应用程序.我知道AppDomain.CurrentDomain.UnhandledException,但这不允许您防止应用程序关闭. 作为参考,我正在.NET 4.0中编写一个控制台应用程序.有没有人有任何解决方案/建议来阻止这些例外来杀死我的应用程序? 解决方法
您可能会看到的是
HandleProcessCorruptedStateExceptionsAttribute 属性.
我不知道这是否是你的问题,但是我最近不得不在一个在第三方COM对象中调用一个函数的方法使用这个属性.这个属性是.net 4.0的新特性.我的基本理解是,4.0框架默认情况下不会引发异常,在某些情况下,感觉第三方异常可能会引入一些不稳定性.我认为这主要涉及第三方组件不受管理的情况.我不确定,但它解决了我的问题. 使用情况如下所示: [System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute()] private void ThirdPartyCall() { try { return Call3rdPartyFunction() } catch (Exception exInstantiate) { ... } } 更多信息:http://msdn.microsoft.com/en-us/magazine/dd419661.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |