appdomains之间的线程访问

时间:2011-11-28 11:44:58

标签: .net

可以将在应用程序域中创建的线程移动到其他appdomain。由于每个appdomain彼此隔离,

  1. 一次如何访问在app域中创建的线程 其他appdomain?
  2. 的任何示例
  3. CLR如何跟踪这一点并处理线程的移动?

2 个答案:

答案 0 :(得分:0)

如果您指的是Thread对象,那么它不能在AppDomain边界上“移动”而不进行序列化。但是,您可以通过远程处理与不同AppDomain中的对象进行交互。

答案 1 :(得分:0)

  

根据msdn msdn.microsoft.com/en-us/library/a60kkx8k.aspx。 :   应用程序域与之间没有一对一的关联   线程。几个线程可以在单个应用程序中执行   域在任何给定的时间和特定的线程不限于   单一应用领域。也就是说,线程可以自由交叉   应用领域边界;不为每个创建新线程   应用领域

来自同一篇文章:

  

“在任何给定时间,每个线程都在应用程序中执行   域。任何可能正在执行零个,一个或多个线程   给定应用程序域。运行时跟踪哪些线程   正在运行哪些应用程序域。您可以在中找到域   通过调用GetDomain随时执行一个线程   方法“。

重要的一点是,任何时候给定的线程仅限于一个AppDomain。这很重要,如果线程中止或抛出未处理的异常,那么它只会包含受影响的AppDomain。线程之间可以共享的是从MarshalByRefObject或MarshalByValueObject类派生的数据(即对象)。