星期日, 5月 20, 2007

.Net 2.0 Windows Form 跨執行緒存取Control

.Net framework 2.0對Windows Form的安全性有些改變,最近把一支.Net 1.1版的小程式改成.Net 2.0時真是吃盡苦頭。

簡單的說,如果寫視窗程式,希望在多緒行緒中存取WinForm Control,就必須照MSDN上的說明 HOW TO:進行對 Windows Form 控制項的安全執行緒呼叫 寫,否則就會出現「存取控制項 control name 時所使用的執行緒與建立控制項的執行緒不同」。
最簡單的作法:設定Control.CheckForIllegalCrossThreadCalls=false
比較好的作法:透過Control.InvokeRequired和delegate處理。

.Net真的是愈來愈複雜了呀...若不是要呼叫低階API,用Java寫還簡單些。

沒有留言: