1. 程式人生 > >跨執行緒訪問控制元件拋異常的解決方法

跨執行緒訪問控制元件拋異常的解決方法

方法1:關閉跨執行緒操作的檢查,在建構函式裡面新增:System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;,但是此方法不推薦使用。

方法2:(推薦使用此方法)在訪問的地方找回建立控制元件的執行緒,拿建立控制元件的執行緒去操作該控制元件。程式碼如下:

if(textBox1.InvokeRequired)    //是否是別的執行緒建立此控制元件的

{

//找到建立textBox1控制元件的執行緒,執行委託

textBox1.Invoke(new Action<string>(s => {this.textBox1.Text = s; }), "測試1");

}

else

{

textBox1.Text = "測試2";

}