1. 程式人生 > >C# 跨執行緒操作UI(介面)

C# 跨執行緒操作UI(介面)

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);