單一執行緒應用程式與長期執行的計算範例
更新:2007 年 11 月
這個範例示範如何讓 UI 在執行長時間作業的單一執行緒應用程式中不會沒有回應。
按一下這個範例中的 Button 時會開始計算質數。這項計算理論上並不會結束,因此如果事件處理常式只是進入迴圈並開始計算質數,則呼叫永遠不會結束,造成 UI 執行緒凍結。
為了避免這個問題,這個範例會透過呼叫 BeginInvoke,將非同步的 (Asynchronous) 工作佇列至 UI 執行緒的 Dispatcher 中。推入至佇列的工作會在 UI 執行緒處於 SystemIdle 狀態時處理一個數字,並將另一個呼叫推入至發送器,以在下次 UI 執行緒閒置時處理下一個數字。
這確保 UI 執行緒的優先順序一律會高於計算下個數字,而使得 UI 不會擱置。
如需本範例的相關討論,請參閱執行緒模型主題。
這個範例示範 Windows Presentation Foundation 的特定功能,因此並未遵循應用程式開發的最佳做法。如需 Windows Presentation Foundation (WPF) 和 Microsoft .NET Framework 應用程式開發最佳做法的完整內容,請依適當情況參閱下列內容:
協助工具 - 協助工具最佳作法
當地語系化 - WPF 全球化和當地語系化概觀
效能 - 最佳化 WPF 應用程式效能
安全性 - Windows Presentation Foundation 安全性
建置範例
安裝 Windows Software Development Kit (SDK),然後開啟 [建置環境命令] 視窗。在 [開始] 功能表中,指向 [所有程式]、[Microsoft Windows SDK],然後按一下 CMD 殼層。
接著,在軟體開發套件 (SDK) 文件處下載軟體,並存至您的硬碟上。
若要組建建置環境命令視窗的範例,您必須先移至範例的來源目錄在命令提示字元中,輸入 MSBUILD。
若要在 Microsoft Visual Studio 中建置範例,請載入範例方案或專案檔,然後按下 CTRL+SHIFT+B。
執行範例
若要在 [建置環境命令視窗] 中執行編譯後的範例,請執行位在包含範例原始程式碼的檔案夾 (Bin\Debug 或 Bin\Release 檔案夾) 下的 .exe 檔案。
若要在 Visual Studio 中執行編譯後的範例並進行偵錯,請按 F5。