Re: [問題] Text方法會丟出未知的例外?
看起來像是因為跨thread更改文字的關係.
假設是label
你的label建立以及更改text是在主執行緒下建立的.
所以唯有在同一執行緒下的函式可以更改文字.
我這邊提供一個跨執行緒更改文字的方法.
我目前是用這個方法.
首先在form的主函式下面宣告一個
private delegate void UpdateUICallBack(string value, Control ctl);
//跨執行緒更改label文字內容,需用委派方法
內容是
private void UpdateUI(string value, Control ctl)
{
if (this.InvokeRequired)
{
UpdateUICallBack uu = new UpdateUICallBack(UpdateUI);
this.Invoke(uu, value, ctl);
}
else
{
ctl.Text = value;
}
}
之後只要跨執行緒要更改文字的地方.
就呼叫UpdateUI("XD",label3)
這樣就可以把label3的文字改成XD了.
這樣做的好處是,不必怕多執行緒的狀況下會同時改到同樣的內容
當然virdust2003的方法也可以.
他的方法比較偏向把限制解除
允許不同的執行緒跨執行緒改文字.
但是這樣的話,
寫程式的人就要保證不同執行緒不會同時都要更改內容.
不然可能會造成更嚴重的錯誤(吧?)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.125.83.171
※ 編輯: liaommx 來自: 118.169.184.139 (05/23 08:10)
討論串 (同標題文章)