1. 程式人生 > 實用技巧 >從另一個執行緒更新GUI製作容易

從另一個執行緒更新GUI製作容易

介紹 我發現,即使是在後臺執行緒中完成的簡單操作需要更新介面,也需要強制這些介面呼叫返回到相同的執行緒中,因為介面在… 經過一些研究,我發現這是用Invoke方法完成的。起初,我建立了數百個委託/函式來處理每個控制元件的更新,但現在,雖然我釋出的這個解決方案可以更好,但至少對我來說,它節省了不少時間,所以希望它能幫助其他人…… 基本上,我們下面有一個靜態類(thread .cs),它有一些委託,比如SetText(Control, string),可以讓你用一些文字設定任何控制元件的文字。下面的例子是非常基本的,但是在thread .cs中還有很多其他的例子,比如在列表檢視中新增條目,改變複選框的複選狀態,等等。看看吧。 下面是一個更改控制元件文字屬性的基本示例。 使用 隱藏,複製Code

ThreadSafe.SetText(this.whateverControl, "text to change");

並不簡單。 委託 隱藏,複製Code

public delegate void SetTextDelegate(System.Windows.Forms.Control ctrl, string text);

這定義了SetText方法的簽名。 該方法 隱藏,複製Code

//generic system.windows.forms.control

public static void SetText(System.Windows.Forms.Control ctrl, string
text) { if (ctrl.InvokeRequired) { object[] params_list = new object[] { ctrl, text }; ctrl.Invoke(new SetTextDelegate(SetText), params_list); } else { ctrl.Text = text; } }

還有其他控制元件、列表檢視、按鈕、組合框等的類和繼承類,這會節省你編寫執行緒安全GUI程式碼的時間。希望這對某些人有所幫助。如果有或者需要幫助,請留下評論! 下載助手類 連結至原稿 本文轉載於:http://www.diyabc.com/frontweb/news8503.html