C# winform程序里经常会用到多线程,如果在线程的逻辑处理里面有需要刷新UI的,就需要交给委托来处理。
如下:
定义委托
private delegate void ShowDelegate(string Msg); //显示信息委托
刷新界面方法:
/// <summary>
/// 显示提示
/// </summary>
private void ShowMsgBox(string tmp)
{
if (this.InvokeRequired)
{
var hander = new ShowDelegate(ShowMsgBox);
this.Invoke(hander, tmp);
}
else
{
MsgBox.Show(tmp, "提示", MsgBoxButtons.OK);
}
}
调用:
// 线程方法
private void Test(string info)
{
ShowMsgBox(info);
}
当然也可以这样:
private void RefreshUI(string info)
{
txtBox.Text = info;
}
然后在线程方法里这样:
this.BeginInvoke(new ShowDelegate(RefreshUI), strInfo);