メインの AppDomain から、別の AppDomain でインスタンス化された型で定義された非同期メソッドを呼び出そうとしています。
たとえば、次の型は新しい AppDomainMyClass
から継承され、インスタンス化されます。MarshalByRefObject
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 でインスタンス化された型から非同期メソッドを呼び出す/待機できるようにしたいと本当に思っています...方法はありますか?
ありがとう !