C 執行緒間操作無效

2021-09-30 06:44:41 字數 408 閱讀 6212

最近在寫串列埠通訊

今天中午突然遇到乙個問題

我在serialport的datareceived事件中訪問 主介面的控制項 突然出現了下面的錯誤

訪問非自己執行緒的東西 會發生如上類似的錯誤

解決的方法如下

從程式設計上來說,只有建立介面的主線程才能訪問介面上的控制項,所以會出錯.

當然,設定checkforillegalcrossthreadcalls =false 是能去掉這個檢查的,但是這不是標準的作法.

標準的作法是在訪問介面控制項時,訪問下窗體的 invokerequired 屬性,如果為false就可以直接訪問,

否則就是跨執行緒訪問;此時,建立乙個delegate,並通過invoke() 來呼叫它.

詳細的資訊,可以在網上搜一下c#的跨執行緒訪問,這方面的資料很多.

c 執行緒間操作無效

多執行緒除錯 form1.checkforillegalcrossthreadcalls false 建議採用網路 上另一種 invoke c 小結 執行緒間操作無效 從不是建立控制項的執行緒訪問它 錯誤的解決方法 在程式設計中經常會遇到在乙個按鈕中執行複雜操作,並將複雜操作最後返回的值加入乙個li...

執行緒間操作無效 從不是建立控制項「XX」的執行緒訪問它

在進行執行緒方面的程式設計的時,遇到這樣的錯誤 執行緒間操作無效 從不是建立控制項 xx 的執行緒訪問它 解決方法 在建構函式中加入如下 checkforillegalcrossthreadcalls false 訪問 windows 窗體控制項本質上不是執行緒安全的。如果有兩個或多個執行緒操作某一...

執行緒間操作無效 從不是建立控制項的執行緒訪問它

using system using system.threading using system.windows.forms private void button1 click object sender,eventargs e start 出現上述錯誤的原因是 net禁止了跨執行緒呼叫控制項。只...