分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
由於多執行緒可能導致對控制項訪問的不一致,導致出現問題。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...