DrS*_*ock 11 .net c# console multithreading exception-handling
我正在编写一个依赖于某些第三方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
| 归档时间: | 
 | 
| 查看次数: | 8896 次 | 
| 最近记录: |