引自 MSDN:http://msdn.microsoft.com/en-us/library/6kac2kdh.aspx
One or more managed threads (represented by System.Threading.Thread) can run in one or any number of application domains within the same managed process. Although each application domain is started with a single thread, code in that application domain can create additional application domains and additional threads. The result is that a managed thread can move freely between application domains inside the same managed process; you might have only one thread moving among several application domains.
我尝试用共享一个线程的 2 个应用程序域编写代码。但是我放弃了。我真的不知道这怎么可能。你能给我一个代码示例吗?
最佳答案
这可以通过简单地在单独的 AppDomain 中创建一个 MarshalByRef 对象然后调用该对象的方法来完成。
以下面的类定义为例。
public interface IFoo
{
void SomeMethod();
}
public class Foo : MarshalByRefObject, IFoo
{
public Foo()
{
}
public void SomeMethod()
{
Console.WriteLine("In Other AppDomain");
}
}
然后您可以使用此定义从当前的 AppDomain 调用一个单独的 AppDomain。在调用写入控制台时,您将在 2 个 AppDomains 中有 1 个线程(在调用堆栈中的 2 个不同点)。下面是示例代码。
public static void CallIntoOtherAppDomain()
{
var domain = AppDomain.CreateDomain("Other Domain");
var obj = domain.CreateInstanceAndUnwrap(typeof(Foo).Assembly.FullName, typeof(Foo).FullName);
var foo = (IFoo)obj;
foo.SomeMethod();
}
关于c# - 应用程序域和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675089/