.NET 2005 的 Thread 比較嚴格 不能隨意存取其他 Thread 的資料
看網路上找到的資料聽說 .NET 2003 是 ok 的
其錯誤訊息:
跨執行緒作業無效: 存取控制項 'xxx' 時所使用的執行緒與建立
控制項的執行緒不同。
至於用來解決的方式有 BackgroundWorker 等相關技術
但由於我的目的是要變動 winform 裡頭的東西 不太ok
最後摸到一個方法:
http://www.purecs.net/thread/topic736_1.aspx
簡敘:
Step 1:
在 form 中請多添加以下這個 member
private delegate void InvokeUpdateState(string state); // 依需求
Step 2:
要透過 Thread 做動作的東西
如 event handler 會 call 到的那支 function
對那支 function 做一些調整
ex:
private void show( string k ){
if( this.form元件.InvokeRequired ){
this.Invoke(
new InvokeUpdateState(this.show) , new object[]{k}
);
}else{ // 原先寫好動作的部分
}
}
這樣就沒啥問題了
沒有留言:
張貼留言