Multithreading ElementHost告诉我“调用线程必须是STA,因为许多UI组件都需要它。”
我刚刚在windows窗体中添加了一个ElementHost。窗体中还有其他一些c代码。然后它给了我一个错误,调用线程必须是STA,因为许多UI组件都需要它。我将线程更改为STA,但它阻止了其他内容…是否有任何方法可以使elementhost在不接触任何其他代码的情况下工作 以下是我如何更改线程的代码:Multithreading ElementHost告诉我“调用线程必须是STA,因为许多UI组件都需要它。”,multithreading,elementhost,sta,Multithreading,Elementhost,Sta,我刚刚在windows窗体中添加了一个ElementHost。窗体中还有其他一些c代码。然后它给了我一个错误,调用线程必须是STA,因为许多UI组件都需要它。我将线程更改为STA,但它阻止了其他内容…是否有任何方法可以使elementhost在不接触任何其他代码的情况下工作 以下是我如何更改线程的代码: public UCClientSummary() { InitializeComponent(); Thread thread = new Thread
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]属性。 我不确定切换线程单元状态是否有效 可能是背景工作人员已经在错误的公寓状态中创建 嗯 马里奥