Sdílet prostřednictvím


Osvědčené postupy pro používání fondu vláken

Toto téma popisuje osvědčené postupy pro práci s fondem vláken.

Co dělat

  • Pomocí fondu vláken můžete v aplikaci pracovat paralelně.

  • Pomocí pracovních položek můžete provádět rozšířené úlohy bez blokování vlákna uživatelského rozhraní.

  • Vytvořte pracovní položky, které jsou krátkodobé a nezávislé. Úlohy se spouštějí asynchronně a mohou být předány do fondu v libovolném pořadí z fronty úloh.

  • Odešle aktualizace do vlákna uživatelského rozhraní pomocí Windows.UI.Core.CoreDispatcher.

  • Použijte ThreadPoolTimer.CreateTimer místo funkce Sleep.

  • Místo vytváření vlastního systému pro správu vláken použijte fond vláken. Fond vláken běží na úrovni operačního systému s pokročilými schopnostmi a je optimalizovaný tak, aby dynamicky škáloval podle prostředků a aktivit zařízení v rámci procesu a v celém systému.

  • V jazyce C++ se ujistěte, že delegáti pracovních položek používají agilní model vláken (delegáti C++ jsou ve výchozím nastavení agilní).

  • Pokud nemůžete tolerovat selhání přidělení prostředků v době použití, použijte předem přidělené pracovní položky.

Co nedělat

  • Nevytvávejte pravidelné časovače s obdobím hodnotou <1 milisekund (včetně 0). Toto způsobí, že se pracovní položka bude chovat jako jednorázový časovač.

  • Neodesílejte periodické pracovní položky, které trvá déle, než je doba, kterou jste zadali v parametru období .

  • Nepokoušejte se odesílat aktualizace uživatelského rozhraní (jiné než informační zprávy a oznámení) z pracovní položky odeslané z úlohy na pozadí. Místo toho použijte obslužné rutiny průběhu úkolu na pozadí a obslužné rutiny dokončení – například IBackgroundTaskInstance.Progress.

  • Pokud používáte obslužné programy pracovních položek, které využívají klíčové slovo asynchronní, nepředpokládejte, že se veškerý kód v obslužném programu již provedl, když je na pracovní položce nastavena kompletní stav. Pracovní položka fondu vláken může být nastavena na úplný stav před spuštěním veškerého kódu v obslužné rutině. Kód následující za klíčovým slovem await v rámci obslužné rutiny se může spustit poté, co byla pracovní položka nastavena na dokončený stav.

  • Nepokoušejte se spustit předem přidělenou pracovní položku více než jednou, aniž byste ji znovu inicializovali. Vytvoření pravidelné pracovní položky