0

我刚刚在 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);
    }
4

1 回答 1

0

在 main 前面添加 [STAThread] 属性。我不确定在工作之间切换线程单元状态是否有效。

可能是后台工作人员已经在错误的公寓状态下创建。

hth

马里奥

于 2010-11-02T22:32:35.547 回答