其他信息: 線程間操作無效: 從不是創建控件“控件名”的線程訪問它。


在多線程程序中,新創建的線程不能訪問UI線程創建的窗口控件,如果需要訪問窗口中的控件,有以下解決辦法

1.可以在窗口構造函數中將CheckForIllegalCrossThreadCalls設置為 false

public Form1()
{
    InitializeComponent();
    CheckForIllegalCrossThreadCalls = false;
}

2.使用委托調用

聲明委托:

private delegate void MyDelegateUI();

使用委托在多線程中執行:

MyDelegateUI d = delegate{
   this.stateLabel.Text = "正在讀取目標文件";
};
this.stateLabel.Invoke(d);

這就是多線程界面元素操作的2種解決方法。


免責聲明!

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



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