新しい AppDomain (asp.net MVC フレームワークの FWIW) 内で実行されている API を呼び出したいと考えています。AppDomain 内でコードを実行するためのいくつかのオプションを発見しました。これまでに見たソリューションの冗長さに満足していません。
私は発見した:
アセンブリの実行:
appDomain.ExecuteAssembly("SOMEPATH.exe");
実行可能ファイルを起動することは、API 呼び出しを行う良い方法ではありません。Main()
API の各パブリック メソッドを表すさまざまなパラメーターを に渡す必要があると思います。
反射:
ObjectHandle handle = appDomain.CreateInstance("someassembly.dll", "someType");
A a = (A) handle.Unwrap();
a.SomeField = "foo";
これは、API の優れたソリューションだと思います。ただし、複雑なセットアップとパフォーマンスのオーバーヘッドの可能性があるため、私は Reflection の大ファンではありません。
これらのフープを通過せずにメソッドを起動できるように、新しいスレッドでアプリドメインをロードする手段はありますか? 言い換えれば、効果的に次のことを行う手段があります。
Thread.Start("useThisAppdomain",
//do work.
className.M();//run in new appdomain
);
など?