c# – 防止第三方组件的异常崩溃整个应用程序

前端之家收集整理的这篇文章主要介绍了c# – 防止第三方组件的异常崩溃整个应用程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个依赖于第三方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

猜你在找的C#相关文章