を作成するときThread
、開始する前にその COM アパートメントの状態を明示的に設定するオプションがあります。例えば:
// using System.Threading;
var thread = new Thread(…);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
しかし、 を作成AppDomain
してそれにコードをロードすると、スレッドの作成を明示的に制御できないように見えるため、 を呼び出す方法がありませんSetApartmentState
。
// using System;
var pluginAppDomain = AppDomain.Create("PluginAppDomain");
pluginAppDomain.ExecuteAssembly(@"Plugin.dll");
内部で作成されたメイン/エントリ スレッドがAppDomain
特定の COM アパートメント状態を使用するように指定する方法はありますか?
のメイン エントリ メソッドをor属性Plugin.dll
でマークできることはわかっています。がCOM アパートメントの状態を明示的に宣言または設定しておらず、変更できないと仮定しましょう。[STAThread]
[MTAThread]
Plugin.dll
Plugin.dll