C# 应用程序域和线程

Bla*_*ath 5 c# multithreading appdomain marshalling

我带着一个小问题来了,这个问题让我整晚都睡不着。也许这很容易理解,但我还不能。

哪个更好?线程内的 AppDomain,还是新 AppDomain 内的线程?

所以这就是以下之间的区别:

static void Main() {
    AppDomain ad = AppDomain.CreateDomain ("NewDomain");
    Thread t = new Thread (delegate() { ad.DoCallBack (SomeMethod); });
    t.Start();
}

static void SomeMethod() { }
Run Code Online (Sandbox Code Playgroud)

和:

public void Start() {
    myAssembly = Assembly.LoadFrom(dllFileName);
    Type myType = AssEnsamblado.GetType(myAseembly.Type);
    MethodInfo myMethod = tipo.GetMethod(@"StartDLL");
    object obj = Activator.CreateInstance(myType);
    Thread thrBase = new Thread(new ThreadStart(delegate() { myMethod.Invoke(obj, null); }));
    thrBase.Start();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段在继承自 MBRO 的类中执行,以创建远程实例并调用包含该代码的方法。

lys*_*cid 0

我会冒险说,一旦您的代码在新的应用程序域中执行,无论哪种方式都几乎没有区别。

问题是跨越到其他应用程序域,这可能需要对传递/返回到新应用程序域的对象进行序列化/编组(如果支持)。