在Winform程式中,經常會有需要改變畫面上各個控制項屬性的時候,
而應用程式經常會用到多執行緒的方式處理各種資料,這時很有可能會出現跨執行緒存取
控制項的情形,此時會出現錯誤訊息,如:存取控制項 'label1' 時所使用的執行緒與建立控制項的執行緒不同
解決方式
1.可用現成的控制項BackgroundWorker
2.建立委派(Delegate)
下面以委派的方式解決跨執行緒問題
跨執行緒變更Label顯示文字
private delegate void lbCallBack(Label label, String value); private void ChangeLb(Label label, String value) { if (label.InvokeRequired) { lbCallBack d = new lbCallBack(ChangeLb); this.Invoke(d, new object[] { label, value }); } else { label.Text = value; } }
文章標籤
全站熱搜