Multithreading ElementHost告诉我“调用线程必须是STA,因为许多UI组件都需要它。”

Multithreading ElementHost告诉我“调用线程必须是STA,因为许多UI组件都需要它。”,multithreading,elementhost,sta,Multithreading,Elementhost,Sta,我刚刚在windows窗体中添加了一个ElementHost。窗体中还有其他一些c代码。然后它给了我一个错误,调用线程必须是STA,因为许多UI组件都需要它。我将线程更改为STA,但它阻止了其他内容…是否有任何方法可以使elementhost在不接触任何其他代码的情况下工作 以下是我如何更改线程的代码: public UCClientSummary() { InitializeComponent(); Thread thread = new Thread

我刚刚在windows窗体中添加了一个ElementHost。窗体中还有其他一些c代码。然后它给了我一个错误,调用线程必须是STA,因为许多UI组件都需要它。我将线程更改为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);
    }

在主线程前面添加[StatThread]属性。 我不确定切换线程单元状态是否有效

可能是背景工作人员已经在错误的公寓状态中创建

马里奥