方法一:system.windows.forms.control.checkforillegalcrossthreadcalls = false;
不推薦使用這種方式,禁止編譯器對跨執行緒訪問做檢查的方式實現。
方法二:使用delegate和invoke
private delegate void updatelabel2delegate(string message);
void updatelabel2(string message)
);
new object );
}
else
}
或者:
void updatelabel2(string message)
);
}
或者:(不使用委託方式)
private void button2_click(object sender, eventargs e)
private void updatelabel2(object str)
;
// 或者
// actionactiondelegate = delegate(string txt) ;
this.label2.invoke(actiondelegate, str);
}
else
}
方法三:使用backgroundworker元件
private void button4_click(object sender, eventargs e)
}
void bw_dowork(object sender, doworkeventargs e)
void bw_runworkercompleted(object sender, runworkercompletedeventargs e)
C 之WinForm跨執行緒訪問控制項例項
具體實現方法如下 1 跨執行緒訪問控制項委託和類的定義 複製 如下 using system using system.windows.forms namespace ahwildlife.utils 2 用法 在form1.cs檔案的執行緒方法中 複製 如下 invokedelegate invo...
關於Winform中控制項的跨執行緒訪問
閒著沒事想起來用winform做乙個隨機的抽號程式,咋看來這麼個東西其實並不難,不過對於乙個菜鳥來說其實並不簡單!尤其是對於多執行緒不是特別熟悉的新手來說。首先,介面比較簡單winform,上傳好麻煩 既然是隨機抽取號碼,就得有隨機數 其實關鍵不在這裡,圖省事就random了 可是在用到多執行緒的時...
c 跨執行緒訪問控制項
訪問 windows 窗體控制項本質上不是執行緒安全的。如果有兩個或多個執行緒操作某一控制項的狀態,則可能會迫使該控制項進入一種不一致的狀態。還可能出現其他與執行緒相關的 bug,包括爭用情況和死鎖。所以,確保以執行緒安全方式訪問控制項是非常重要的。private static object dat...