加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读