網頁

搜尋此網誌

2010年3月31日 星期三

Windows Presentation Foundation Threading Model

最近撰寫的應用程式遇到多的Window互動的問題,因此我們來談談Windows Presentation Foundation (WPF)中的執行緒(Thread),WPF中有個執行緒模型(Threading Model)的觀念,可能和以前的Windows開發不太一樣!

可以參考MSDN:
或是MSDN Magazine這篇文章:
這裡要闡述一個觀念,基本上來說,Windows應用程式只會有一個執行緒在執行程式碼,換句話說,如果你讓執行緒Sleep的話,或者正在等候某項工作,則整個Window不會回應你任何事情,這是很糟糕的事情!

在WPF中,事情似乎比較不一樣!在MSDN中解釋:「一般而言,WPF 應用程式開始時會使用兩個執行緒:一個是用於處理轉譯,而另一個則是用於管理 UI。轉譯執行緒可有效地以隱藏方式在背景執行,而 UI 執行緒則會接收輸入、處理事件、繪製螢幕以及執行應用程式程式碼。」這點就和一般的Windows視窗應用程式不相同,一般的Windows視窗應用程式(比方說Windows Form)程式執行後就只有一個執行緒,沒有WPF所謂的轉譯執行緒。WPF的轉譯執行緒使用來更新UI的呈現,一般而言我們都不會去使用。

雖說這小小的不太一樣:WPF使用兩個執行緒執行Windows視窗應用程式。可是在實際應用上,你還是必須自己處理執行緒的問題,因為WPF程式中程式設計師還是只有一個執行緒可以控制使用,為了提供較好的使用者體驗,MSDN建議使用Dispatcher的功能,目前還在研究當中,待續...

沒有留言:

張貼留言

熱門文章