Winform 讓跨執行緒訪問變得更簡單

2021-08-31 10:03:15 字數 704 閱讀 8942

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

由於多執行緒可能導致對控制項訪問的不一致,導致出現問題。c#中預設是要執行緒安全的,即在訪問控制項時需要首先判斷是否跨執行緒,如果是跨執行緒的直接訪問,在執行時會丟擲異常。近期在專案中碰到這個問題,首先想到的是,關閉跨執行緒檢查,因為做的winform沒有多麼複雜,圖省事就直接這樣做了,之後又出了一點點問題,還是必需通過委託的方式來實現。

測試示例

網上的資料很多,這裡直接摘抄。

1、關閉跨執行緒檢查。

2、通過委託的方式,在控制項的執行緒上執行。

具體的**如下:

在我的winform程式中,子執行緒涉及到對多個控制項的更改,於是封裝了一下,我這裡使用的是拓展方法,只有在.net 3.5上才能支援,如果是.net2.0的環境,需要新增

namespace system.runtime.compilerservices}
封裝如下:

具體的測試如下:

這樣一行**就可以完成跨執行緒訪問啦。

給我老師的人工智慧教程打call!

Winform 讓跨執行緒訪問變得更簡單

由於多執行緒可能導致對控制項訪問的不一致,導致出現問題。c 中預設是要執行緒安全的,即在訪問控制項時需要首先判斷是否跨執行緒,如果是跨執行緒的直接訪問,在執行時會丟擲異常。近期在專案中碰到這個問題,首先想到的是,關閉跨執行緒檢查,因為做的winform沒有多麼複雜,圖省事就直接這樣做了,之後又出了一...

winform跨執行緒

在winform中經常用到多執行緒,那麼用多執行緒對控制項進行賦值和修改的時候呢會出現類似 該控制項不是當前執行緒建立 的錯誤資訊,在winform中兩種辦法 1.在載入事件中寫這句話,其作用呢就是執行緒的非同步呼叫 1 system.windows.forms.control.checkforil...

C 跨執行緒訪問winform控制項的方法

方法一 system.windows.forms.control.checkforillegalcrossthreadcalls false 不推薦使用這種方式,禁止編譯器對跨執行緒訪問做檢查的方式實現。方法二 使用delegate和invoke private delegate void upda...