在多線程程序中,新創建的線程不能訪問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種解決方法。