在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;
}
}
文章標籤
全站熱搜
留言列表