C# 跨執行緒操作UI(介面)
阿新 • • 發佈:2019-01-26
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);