使用執行緒集區的最佳做法

本主題使用使用執行緒集區的最佳做法。

可執行動作

  • 使用執行緒集區在您的應用程式中執行平行工作。

  • 使用工作項目來完成擴充工作,而不阻塞 UI 執行緒。

  • 建立短暫且獨立的工作項目。 工作項目會以非同步方式執行,並且可以按任意順序從佇列提交到集區中。

  • 使用 Windows.UI.Core.CoreDispatcher 將更新分派至 UI 執行緒。

  • 使用 ThreadPoolTimer.CreateTimer 而不是 Sleep 函式。

  • 使用執行緒集區而不是建立自己的執行緒管理系統。 執行緒集區在作業系統層級執行,具有進階功能,並經過最佳化,可根據裝置資源以及程序內和整個系統的活動動態擴展。

  • 在 C++ 中,確保工作項目委派使用敏捷式執行緒模型 (C++ 委派預設為敏捷式)。

  • 當您無法容忍使用時資源分配失敗時,請使用預先指派的工作項目。

不可執行動作

  • 請勿建立週期值為 <1 毫秒 (包括 0) 的週期性計時器。 這會導致工作項目以單次計時器的形式運作。

  • 請勿提交比您在 period 參數中指定的時間更長的週期性工作項目。

  • 請勿嘗試從背景工作分派的工作項目傳送 UI 更新 (除了快顯通知和通知)。 請改用背景工作進度和完成處理常式,例如 IBackgroundTaskInstance.Progress

  • 當您使用使用 async 關鍵字的工作項目處理常式時,請注意,在執行處理常式中的所有程式碼之前,執行緒集區工作項目可能會設定為完成狀態。 處理常式中 await 關鍵字後面的程式碼可以在工作項目設定為完成狀態後執行。

  • 請勿嘗試多次執行預先分配的工作項目而不將其重新初始化。 建立定期工作項目