ElementHostは、「多くのUIコンポーネントがこれを必要とするため、呼び出しスレッドはSTAでなければなりません。」
-
28-09-2019 - |
質問
WindowsフォームにElementHostを追加しました(フォームに他のC#コードがあります)。次に、「多くのUIコンポーネントがこれを必要とするため、呼び出しスレッドはSTAでなければならない」エラーが与えられました。スレッドをSTAに変更しましたが、他のことをブロックしました...とにかく他のコードに触れずにElementHostを動作させるためにありますか?
こちらがスレッドの変更方法です。
public UCClientSummary()
{
InitializeComponent();
Thread thread = new Thread(createElementHost);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
public void createElementHost()
{
ElementHost elementHost = new ElementHost();
elementHost.Dock = DockStyle.Fill;
LDControls.ucCell uc = new LDControls.ucCell();
elementHost.Child = uc;
this.Controls.Add(elementHost);
}
解決
メインの前に[stathread]属性を追加します。作品の合間にスレッドアパートメント状態を切り替えるかどうかはわかりません。
バックグラウンドワーカーはすでに間違ったアパート州で作成されている可能性があります。
Hth
マリオ
所属していません StackOverflow