0

ElementHostをWindowsフォームに追加しました(フォームには他にもいくつかの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);
    }
4

1 に答える 1

0

メインの前に[STAThread]属性を追加します。作業の合間にスレッドアパートメントの状態を切り替えるかどうかはわかりません。

バックグラウンドワーカーがすでに間違ったアパートの状態で作成されている可能性があります。

hth

マリオ

于 2010-11-02T22:32:35.547 に答える