Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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