从主 AppDomain,我试图调用在不同 AppDomain 中实例化的类型中定义的异步方法。
例如,以下类型MyClass
继承自MarshalByRefObject
并在新的 AppDomain 中实例化:
public class MyClass : MarshalByRefObject
{
public async Task<string> FooAsync()
{
await Task.Delay(1000);
return "Foo";
}
}
在主 AppDomain 中,我创建了一个新的 AppDomain 并在此 AppDomain 中创建了 MyClass 的一个实例,然后我调用了 async 方法。
var appDomain = AppDomain.CreateDomain("MyDomain");
var myClass = (MyClass)appDomain.CreateInstanceAndUnwrap(typeof(MyClass).Assembly.FullName, typeof(MyClass).FullName);
await myClass.FooAsync(); // BAM !
当然,SerializationException
当我尝试进行调用时,我得到了一个,因为Task
类型不继承自MarshalByRefObject
,也不是可序列化的。
我怎么能解决这个问题?我真的很希望能够从另一个 AppDomain 中实例化的类型调用/等待异步方法......有没有办法?
谢谢 !