Re: [問題] Text方法會丟出未知的例外?

看板C_Sharp作者 (Orz)時間15年前 (2009/05/21 09:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
看起來像是因為跨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)
文章代碼(AID): #1A5B6-bB (C_Sharp)
文章代碼(AID): #1A5B6-bB (C_Sharp)