[C#]thread 不能直接對控制項取值?
用C#寫windows form 時遇到下列情形
去查了方法 大部分為 invoke + delegate
還查到比較方便但是很危險的作法
這樣做直接就不檢查是否跨thread存取UI
跨執行緒作業無效: 存取控制項 'textBox1' 時所使用的執行緒與建立控制項的執行緒不同。
去查了方法 大部分為 invoke + delegate
public delegate void ModifyTextBoxDelegate(String s);
private void ModifyTextBox(String s)
{
if (textBox1.InvokeRequired)
{
ModifyTextBoxDelegate d = new ModifyTextBoxDelegate(ModifyTextBox);
this.Invoke(d, s);
}
else
{
textBox1.Text = s;
}
}
還查到比較方便但是很危險的作法
Form.CheckForIllegalCrossThreadCalls = False
這樣做直接就不檢查是否跨thread存取UI
留言
張貼留言