2010-03-05 32 views

回答

11

AppDomain在默认情况下不会获得自己的线程。您可以使用现有的线程在另一个AppDomain中执行代码,或者调用AppDomain中的一个方法来创建新的线程。事实上,除非你专门创建了额外的线程,否则调用另一个域中的代码将在进程的主线程中执行。

AppDomain documentation

多个应用程序域可以在单个进程中运行 ;但是, 不是 应用程序域和线程之间的一对一关联。 几个线程可以属于单个应用程序域,并且给定的 线程不限于单个应用程序域,在任何给定时间,线程都在单个应用程序域中执行。

在你的例子中,你创建了线程(或者更具体地说线程池是这样做的),因此代码将在这些线程上运行。但是,我不确定我会建议如何在线程池线程上创建AppDomain。

卸载AppDomain将中止AppDomain中的所有线程。我真的不知道线程池将如何对此作出反应。有关卸载的更多信息here

3

应用程序域比线程大,但比进程小。你可以把它们想象成多个线程的潜在集合。如果应用程序域创建另一个新的应用程序域,则新的应用程序域将拥有自己的线程。一个应用程序域中的线程永远也不会成为另一个应用程序域的一部分,也不允许直接与其他应用程序域的线程对话。

+0

为什么downvote? – 2010-03-05 16:56:29

+3

_“如果应用程序域创建另一个新的应用程序域,则新的应用程序域将拥有它自己的线程。”_。虽然我不是downvoter,但是这个陈述除了实际发生的事情之外还有一点点。当你创建另一个AppDomain时,它将在当前线程中执行。如果你想在自己的线程中运行AppDomain,你将不得不专门创建一个新线程,并在该线程中创建并启动新的AppDomain。 – Abel 2013-12-09 15:13:42

相关问题