WinForm中在非UI線程更改控件值的辦法


從非UI線程調用UI控件賦值、或進行其他更新UI的操作的話,會出現異常:

System.InvalidOperationException:“線程間操作無效: 從不是創建控件“xxx”的線程訪問它。”

解決辦法:

原來的

xxx.Text="Test";

換成

xxx.BeginInvoke(new Action(()=>{xxx.Text="Test"}));

使用BeginInvoke解決。

參考:Control的Invoke和BeginInvoke 是相對於支線線程(因為一般在支線線程中調用,用來更新主線程ui)Invoke立即插入主線程中執行,而BeginInvoke 要等主線程結束才執行

c# Invoke和BeginInvoke 區別

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM