6

メインの 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ため、呼び出しを行おうとすると が得られます。TaskMarshalByRefObject

どうすればこれを回避できますか?別の AppDomain でインスタンス化された型から非同期メソッドを呼び出す/待機できるようにしたいと本当に思っています...方法はありますか?

ありがとう !

4

1 に答える 1