Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如果工作线程返回未处理,则继续主线程_.net_Multithreading_Reflection - Fatal编程技术网

.net 如果工作线程返回未处理,则继续主线程

.net 如果工作线程返回未处理,则继续主线程,.net,multithreading,reflection,.net,Multithreading,Reflection,我正在使用反射来实例化来自其他程序集的对象。这些程序集中的对象可能会在整个过程中启动其他线程。此程序集的作者可能无法正确处理这些工作线程上的异常。 问题是,当它们返回未经处理的结果时,整个应用程序将停止执行,并触发AppDomain.CurrentDomain.UnhandledException 我尝试过简单地将我的方法调用程序包装在一个try…catch中,但这似乎没有捕获异常(因为下一个派生的工作线程是实际失败的线程) 有没有一种方法可以在不要求开发人员正确处理所有异常的情况下处理这种情况

我正在使用反射来实例化来自其他程序集的对象。这些程序集中的对象可能会在整个过程中启动其他线程。此程序集的作者可能无法正确处理这些工作线程上的异常。 问题是,当它们返回未经处理的结果时,整个应用程序将停止执行,并触发
AppDomain.CurrentDomain.UnhandledException

我尝试过简单地将我的方法调用程序包装在一个
try…catch
中,但这似乎没有捕获异常(因为下一个派生的工作线程是实际失败的线程)

有没有一种方法可以在不要求开发人员正确处理所有异常的情况下处理这种情况

这个想法类似于windows服务的工作方式。仅仅因为一个应用程序失败,并不意味着Windows服务主机也应该崩溃


我在这里遗漏了什么?

您真的应该强制要求在线程中正确处理异常,如果没有,请干净地关闭应用程序

为了防止AppDomain关闭,您需要在它们自己的私有AppDomain中加载这些“组件”。这将导致他们拆除AppDomain,而不是整个应用程序

这会产生其他后果(特别是在将数据传入和传出对象时),并且可能会极大地使应用程序的设计复杂化,所以我不会轻易承担这一任务