我们一般通过线程来防止界面卡死
如果我们在线程中直接修改控件状态和信息那么则会出现如下错误:
在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThread
解决方法为,所有需要改变控件状态的都使用委托的方式:
winform
private void loadInfo() {
this.Invoke((MethodInvoker)delegate { this.label1.Text = "test"; });
}
WPF
private void loadInfo() {
this.Dispatcher.BeginInvoke(new Action(()=> {
this.label1.Text = "test";
}));
}