ElementHostは、「多くのUIコンポーネントがこれを必要とするため、呼び出しスレッドはSTAでなければなりません。」

StackOverflow https://stackoverflow.com/questions/4082649

  •  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

マリオ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top