在多线程程序中,经常需要在子线程中调用到界面的更新操作(即主线程中的控件),这是侯就要用到委托了,
为了使用方便,我们可以封装一个委托的方法,在其中使用InvokeRequired来判断是否需要异步委托,直接上代码:
public delegate void updateProgressDelegate(Single _progress);
public delegate void updateOperateDelegate(string _operate);
private void updateProgress(Single _progress)
{
if (statusStrip1.InvokeRequired == true)
statusStrip1.BeginInvoke(new updateProgressDelegate(updateProgress), _progress);
else
{
tsspProcess.Value = Convert.ToInt32(_progress * 100.0f);
tsslProcess.Text = (_progress * 100.0f).ToString("0.0") + "%";
}
}
private void updateOperate(string _operate)
{
if (statusStrip1.InvokeRequired == true)
statusStrip1.BeginInvoke(new updateOperateDelegate(updateOperate), _operate);
else
tsslStatus.Text = _operate;
}
在需要更新界面时,直接调用 updateProgress和 updateOperate即可