有一个.net服务,服务中开了多线程。其中有一线程会去调用非托管C++DLL,并阻塞等待其返回值。其他线程同步做文件处理、数据状态更新等操作。现在调用非托管C++DLL的线程会因为非托管代码的问题,崩溃。这样整个服务也就崩溃了!需要人工去服务器上重启该服务!请问:如何防止整个服务崩溃?是否可以捕获非托管C++中的错误。因为已经try catch了,但什么都捕获不到,直接服务崩溃!
这个应该要想办法解决C++ DLL的bug
只有在C++ 的DLL代码中try..catch.把异常抛出来,才能捕获得到。除非捕获得了异常,不然怎么防止崩溃呢,,,不知道
还是先确定是哪个的问题?是调用的问题还是C++dll库本身的问题?
确定问题在C++的DLL中(只要调用某个非托管方法就100%会崩溃),但是因为没有改DLL的源代码,所以无法修改。在网上找到一些利用AppDomain和Application.ThreadException的方法,但尝试后并未成功。可能是多线程的问题吧。
问题有点类似这个帖子http://bbs.csdn.net/topics/380218300 不同之处,他是exe,我是服务,服务无法防止崩溃。
这个应该要想办法解决C++ DLL的bug