启动异步操作,使用 RunWorkerAsync 方法。
RunWorkerAsync 采用一个可选的 object 参数,可以使用该参数将变量传递给辅助方法。BackgroundWorker 类公开
DoWork 事件处理程序采用一个
RunWorkerCompleted事件在后台线程执行完毕后有主线程调用。可在该事件处理程序中执行界面的更新操作。
方法2:我喜欢
在跨线程更新窗体的成员方法中应用如下结构:
为改造前:
public void UpdateControl(int x,inty)
{
some code...
}
改造后:
delegate void UpdateControlCallback (int x,int y);
public void UpdataControl(int x,int y)
{
if(this.InvokeRequired)
{ UpdataControlCallback d = new UpdataControlCallback(UpdataControl);
this.Invoke(d,new object[]{x,y});
}
else
{
some code...
}
}