当前位置:  开发笔记 > 编程语言 > 正文

应用程序域和线程

如何解决《应用程序域和线程》经验,为你挑选了1个好方法。

来自MSDN的引用:http://msdn.microsoft.com/en-us/library/6kac2kdh.aspx

一个或多个托管线程(由System.Threading.Thread表示)可以在同一个托管进程中的一个或任意数量的应用程序域中运行.尽管每个应用程序域都是使用单个线程启动的,但该应用程序域中的代码可以创建其他应用程序域和其他线程.结果是托管线程可以在同一个托管进程内的应用程序域之间自由移动 ; 您可能只有一个线程在多个应用程序域之间移动.

我试图用两个共享一个线程的应用程序域编写代码.但我放弃了.我真的不知道这是怎么回事.你能给我一个代码示例吗?



1> JaredPar..:

这可以通过在单独的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个AppDomain中有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();
}

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有