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.
důležitá rozhraní API
Naučte se, jak ladit úlohu na pozadí, včetně aktivace úlohy na pozadí a trasování ladění v protokolu událostí Windows.
Ladění úloh běžících mimo proces vs. úloh běžících v procesu na pozadí
Toto téma primárně řeší úlohy na pozadí, které běží v samostatném procesu než hostitelská aplikace. Pokud ladíte úlohu na pozadí, nebudete mít samostatný projekt úkolů na pozadí a můžete nastavit zarážku na OnBackgroundActivated() (kde běží váš kód na pozadí v rámci procesu). Viz krok 2 v části Ruční spuštění úloh na pozadí pro ladění kódu úlohy na pozadíníže, kde najdete pokyny, jak ručně spustit váš kód na pozadí.
Ujistěte se, že je projekt úkolu na pozadí správně nastavený.
V tomto tématu se předpokládá, že už máte existující aplikaci s úlohou na pozadí, která se má ladit. Toto je specifické pro úlohy na pozadí, které běží mimo proces a nevztahují se na úlohy na pozadí procesu.
- V jazyce C# a C++ se ujistěte, že hlavní projekt odkazuje na projekt úkolu na pozadí. Pokud tento odkaz není zavedený, úloha na pozadí nebude zahrnuta v balíčku aplikace.
- V jazyce C# a C++ se ujistěte, že typ výstupu projektu úlohy na pozadí je komponenta prostředí Windows Runtime.
- Třída pozadí musí být deklarována v atributu vstupního bodu v manifestu balíčku.
Ruční aktivace úloh na pozadí za účelem ladění kódu úlohy na pozadí
Úlohy na pozadí je možné aktivovat ručně prostřednictvím sady Microsoft Visual Studio. Pak můžete procházet kód a ladit ho.
V C# vložte zarážku do metody Run třídy Background (pro úlohy na pozadí v procesu vložíte zarážku do App.OnBackgroundActivated()) a/nebo zapisujte ladicí výstup pomocí System.Diagnostics.
V jazyce C++ umístěte bod přerušení do funkce Run třídy pozadí (pro úlohy na pozadí v procesu umístěte bod přerušení do App.OnBackgroundActivated()) a/nebo zapište výstup ladění pomocí OutputDebugString.
Spusťte aplikaci v ladicím programu a poté spusťte úlohu na pozadí pomocí panelu nástrojů události životního cyklu . V tomto rozevíracím seznamu se zobrazí názvy úloh na pozadí, které může sada Visual Studio aktivovat.
Poznámka:
Možnosti panelu nástrojů Události životního cyklu se ve výchozím nastavení v sadě Visual Studio nezobrazují. Pokud chcete tyto možnosti zobrazit, klikněte pravým tlačítkem myši na aktuální panel nástrojů v sadě Visual Studio a ujistěte se, že je povolená možnost Umístění ladění.
Aby to fungovalo, musí být úloha na pozadí už zaregistrovaná a musí pořád čekat na trigger. Pokud se například úloha na pozadí zaregistrovala pomocí jednorázového timetriggeru a aktivační událost se už aktivovala, spuštění úkolu prostřednictvím sady Visual Studio nebude mít žádný vliv.
Poznámka:
Úlohy na pozadí používající následující aktivační události nelze tímto způsobem aktivovat: aplikace trigger, MediaProcessing trigger, ControlChannelTrigger, PushNotificationTriggera úlohy na pozadí pomocí SystemTrigger s SmsReceived typu.
Spouštěč aplikace a MediaProcessingTrigger lze manuálně aktivovat v kódu pomocítrigger.RequestAsync().
Když se úloha na pozadí aktivuje, ladicí program se k němu připojí a zobrazí výstup ladění ve VS.
Ladění aktivace úlohy na pozadí
Poznámka:
Tato část je specifická pro úlohy na pozadí, které běží mimo proces a nevztahuje se na úlohy na pozadí procesu.
Aktivace úlohy na pozadí závisí na třech věcech:
- Název a obor názvů třídy úloh na pozadí
- Atribut vstupního bodu zadaný v manifestu balíčku
- Vstupní bod určený vaší aplikací při registraci úlohy na pozadí
Pomocí sady Visual Studio si poznamenejte vstupní bod úlohy na pozadí:
- V jazyce C# a C++ si poznamenejte název a obor názvů třídy úlohy na pozadí zadané v projektu úkolu na pozadí.
Pomocí návrháře manifestu zkontrolujte, jestli je úloha na pozadí správně deklarována v manifestu balíčku:
- V jazyce C# a C++ musí atribut vstupního bodu odpovídat oboru názvů úloh na pozadí následovaný názvem třídy. Příklad: RuntimeComponent1.MyBackgroundTask.
- Musí být zadány také všechny typy aktivačních událostí používané s úkolem.
- Spustitelný soubor nesmí být zadán, pokud výslovně nepoužíváte ControlChannelTrigger nebo PushNotificationTrigger.
Jenom Windows. Pokud chcete zobrazit vstupní bod používaný systémem Windows k aktivaci úlohy na pozadí, povolte trasování ladění a použijte protokol událostí systému Windows.
Pokud provedete tento postup a v protokolu událostí se zobrazí nesprávný vstupní bod nebo trigger úlohy na pozadí, vaše aplikace neregistruje správně úlohu na pozadí. Pro nápovědu k této úloze viz Registrace úlohy na pozadí.
- Otevřete prohlížeč událostí tak, že přejdete na obrazovku Start a vyhledáte eventvwr.exe.
- Přejděte do protokolů aplikací a služeb ->Microsoft ->Windows ->BackgroundTaskInfrastructure v prohlížeči událostí.
- V podokně akcí vyberte Zobrazit –>Zobrazit analytické a ladicí protokoly pro povolení diagnostického protokolování.
- Vyberte diagnostický protokol a klikněte na Povolit protokol.
- Teď zkuste pomocí aplikace zaregistrovat a aktivovat úlohu na pozadí znovu.
- Podrobné informace o chybách najdete v diagnostických protokolech. To bude zahrnovat vstupní bod zaregistrovaný pro úlohu na pozadí.
Úlohy na pozadí a nasazení balíčku sady Visual Studio
Pokud se aplikace používající úlohy na pozadí nasadí pomocí sady Visual Studio a verze (hlavní nebo podverze) zadaná v Návrháři manifestu se pak aktualizuje, následné opětovné nasazení aplikace pomocí sady Visual Studio může způsobit zastavení úloh na pozadí aplikace. To lze napravit následujícím způsobem:
- Pomocí Windows PowerShellu nasaďte aktualizovanou aplikaci (místo sady Visual Studio) spuštěním skriptu vygenerovaného společně s balíčkem.
- Pokud jste už aplikaci nasadili pomocí sady Visual Studio a její úlohy na pozadí jsou teď pozastavené, restartujte zařízení, nebo se odhlaste a znovu přihlaste, aby úlohy na pozadí aplikace opět fungovaly.
- Můžete vybrat možnost ladění „Vždy znovu nainstalovat můj balíček“, aby se tomu zabránilo v projektech C#.
- Počkejte, až bude aplikace připravená na konečné nasazení, ke zvýšení verze balíčku (při ladění ji nezměňujte).
Poznámky
- Před opětovnou registrací úlohy na pozadí se ujistěte, že vaše aplikace kontroluje existující registrace úloh na pozadí. Více registrací stejné úlohy na pozadí může způsobit neočekávané výsledky spuštěním úlohy na pozadí více než jednou při každém spuštění úlohy na pozadí.
- Pokud úloha na pozadí vyžaduje přístup k zamykací obrazovce, nezapomeňte před pokusem o ladění úlohy na pozadí umístit aplikaci na zamykací obrazovku. Informace o určení možností manifestu pro aplikace podporující zamykací obrazovku naleznete v tématu Deklarace úloh na pozadí v manifestu aplikace.
- Parametry registrace úlohy na pozadí se ověřují v době registrace. Pokud některý z parametrů registrace není platný, vrátí se chyba. Ujistěte se, že vaše aplikace řádně zpracovává scénáře, kdy se registrace úlohy na pozadí nezdaří – pokud místo toho vaše aplikace závisí na tom, že po pokusu o registraci úlohy má platný objekt registrace, může dojít k chybě.
Další informace o použití VS k ladění úlohy na pozadí naleznete v tématu Jak aktivovat pozastavení, obnovení a události na pozadí v aplikacích pro UPW.
Související témata
- Vytvoření a registrace úlohy na pozadí, která běží mimo proces
- Vytvoření a registrace úlohy na pozadí procesu
- Zaregistrujte úlohu na pozadí
- Deklarovat úlohy na pozadí v manifestu aplikace
- Pokyny pro úlohy na pozadí
- Aktivace událostí pozastavení, obnovení a pozadí v aplikacích pro UPW
- Přehled analýzy kódu pro .NET v sadě Visual Studio