是否可以在AppDomains之间移动工作线程

时间:2011-07-28 00:53:59

标签: c# .net

我必须创建将快速关闭多个线程的过程。我的想法是将所有必须被取消的线程移动到新的AppDomain中,然后中止所有这些线程,然后卸载该AppDomain。

这可能吗?

2 个答案:

答案 0 :(得分:3)

您无法在应用域之间移动线程。对象实际上并未在它们之间移动。

请参阅Moving objects across AppDomains in .NET

我相信你只需要自己处理线程对象并根据需要取消它们。

答案 1 :(得分:1)

中止线程是一个坏主意。考虑实施合作取消。看看它是如何在.Net 4 here中完成的。 以下是该文章的引用:

  

任何异步技术都有一个共同特征,即取消目标完全没有意识到,并且不能轻易确保数据安全。由于许多原因,但特别是由于共享数据部分更新的风险,强烈建议不要使用异步技术。