问题描述
需求描述:我在主域中通过反射方式动态加载很多dll进来,每个dll都分配一个独立的域,供其执行。如果一个域中的dll执行出错,则卸载该域,记录日志,然后重新拉起。问题:现在某个域中出错,直接导致进程退出,而我能做的只是通过unhandleexeception来知道是啥导致问题,但我无法阻止进程退出。我希望的是我抓取到错误之后,把对应的域卸载掉,重拉,主进程不可以退出。求大神指点
解决方案
解决方案二:
如果动态加载的dll不可靠,你要做进程级别的隔离。AppDomain隔离不能解决dll崩溃问题。你可以自己做(我觉得比用MAF要直接些),或用微软的MAF(MicrosoftAdd-inFramework)。但是,两种做法都比较复杂(因为要提供进程级别的隔离)。MAF参考和例子可见:https://msdn.microsoft.com/en-us/library/bb384200%28v=vs.110%29.aspx
解决方案三:
引用1楼Forty2的回复:
如果动态加载的dll不可靠,你要做进程级别的隔离。AppDomain隔离不能解决dll崩溃问题。你可以自己做(我觉得比用MAF要直接些),或用微软的MAF(MicrosoftAdd-inFramework)。但是,两种做法都比较复杂(因为要提供进程级别的隔离)。MAF参考和例子可见:https://msdn.microsoft.com/en-us/library/bb384200%28v=vs.110%29.aspx
我找到解决方案了,可以通过配置文件指定对于unhandleexception的处理方式为legacy即可。
时间: 2024-11-10 00:54:04