2009年7月29日 星期三

在WPF中跨執行緒的元件操作

有時候為了效能或是一些比較花時間的作業
常常會在程式中需要多開幾個執行緒(Thread)
不過如果不同執行緒中同時需要用到
同樣的物件(通常是UI的部分)
不過物件不能跨執行緒
這時候就需要用到Dispatcher

WPF在跨執行緒作業時
假設被用到的函式是

void Func(Type Param);

原本呼叫的地方(另一個執行緒中)本來應該是

Func(p);

直接改成

Dispatcher.Invoke(DispatcherPriority.Normal,
new Action<Type>(Func),p);

注意涵式不能有回傳值,參數可有多個(至少不超過四個都ok)

--
參考資料
使用 Dispatcher 建置回應性更佳的應用程式

沒有留言:

張貼留言