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