Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
ważne interfejsy API
Dowiedz się, jak debugować zadanie w tle, w tym aktywację zadania w tle i śledzenie debugowania w dzienniku zdarzeń systemu Windows.
Debugowanie zadań w tle poza procesem a zadań w tle w procesie
Ten temat dotyczy głównie zadań w tle uruchamianych w osobnym procesie niż aplikacja hosta. Jeśli debugujesz zadanie w tle, które działa w obrębie procesu, nie będziesz mieć oddzielnego projektu zadania w tle. Możesz ustawić punkt przerwania w metodzie OnBackgroundActivated() (tam, gdzie działa Twój kod w tle) i zobaczyć krok 2 w Wyzwalanie zadań w tle ręcznie, aby debugować kod zadania w tleponiżej, aby uzyskać instrukcje dotyczące wyzwalania kodu w tle do wykonania.
Upewnij się, że projekt zadania w tle jest poprawnie skonfigurowany
W tym temacie założono, że masz już istniejącą aplikację z zadaniem w tle do debugowania. Poniżej opisano zadania w tle, które są uruchamiane poza procesem i nie mają zastosowania do zadań w tle w procesie.
- W językach C# i C++upewnij się, że główny projekt odwołuje się do projektu zadania w tle. Jeśli nie ma tego odwołania, zadanie w tle nie zostanie uwzględnione w zestawie aplikacji.
- W językach C# i C++upewnij się, że typ danych wyjściowych projektu zadania w tle to "Składnik środowiska uruchomieniowego systemu Windows".
- Klasa tła musi być zadeklarowana w atrybucie punktu wejścia w manifeście pakietu.
Ręczne wyzwalanie zadań w tle w celu debugowania kodu zadania w tle
Zadania w tle można wyzwalać ręcznie za pomocą programu Microsoft Visual Studio. Następnie możesz przejść przez kod i debugować go.
W C# umieść punkt przerwania w metodzie Run klasy obsługującej zadania w tle (w przypadku zadań w tle w procesie umieść punkt przerwania w App.OnBackgroundActivated()) i/lub zapisz dane wyjściowe do debugowania za pomocą System.Diagnostics.
W języku C++umieść punkt przerwania w funkcji Run klasy w tle (w przypadku zadań w tle w procesie umieść punkt przerwania w pliku App.OnBackgroundActivated()) i/lub zapisz dane wyjściowe debugowania przy użyciu OutputDebugString.
Uruchom aplikację w debugerze, a następnie wyzwól zadanie w tle przy użyciu paska narzędzi zdarzeń cyklu życia . Ta lista rozwijana zawiera nazwy zadań w tle, które mogą być aktywowane przez program Visual Studio.
Uwaga / Notatka
Opcje paska narzędzi Zdarzenia cyklu życia nie są domyślnie wyświetlane w programie Visual Studio. Aby wyświetlić te opcje, kliknij prawym przyciskiem myszy bieżący pasek narzędzi w programie Visual Studio i upewnij się, że opcja Lokalizacja debugowania jest włączona.
Aby to działało, zadanie w tle musi być już zarejestrowane i musi nadal czekać na wyzwalacz. Jeśli na przykład zadanie w tle zostało zarejestrowane przy użyciu jednorazowego wyzwalacza TimeTrigger i wyzwalacz został już wyzwolony, uruchomienie zadania za pomocą programu Visual Studio nie będzie miało żadnego wpływu.
Uwaga / Notatka
Zadania w tle korzystające z następujących wyzwalaczy nie mogą być aktywowane w ten sposób: Wyzwalacz aplikacji, Wyzwalacz MediaProcessing , Wyzwalacz ControlChannel , Wyzwalacz PushNotification oraz zadania w tle wykorzystujące Wyzwalacz systemowy z typem wyzwalacza SmsReceived .
Można ręcznie zasygnalizować w kodzie wyzwalacze Application trigger i MediaProcessingTrigger za pomocątrigger.RequestAsync().
Po aktywacji zadania w tle, debuger zostanie do niego dołączony i wyświetli wynik debugowania w programie Visual Studio.
Debugowanie aktywacji zadania w tle
Uwaga / Notatka
Ta sekcja jest specyficzna dla zadań w tle, które działają poza procesem i nie ma zastosowania do zadań w tle wewnątrz procesu.
Aktywacja zadania w tle zależy od trzech elementów:
- Nazwa i przestrzeń nazw klasy zadań w tle
- Atrybut punktu wejścia określony w manifeście pakietu
- Punkt wejścia określony przez aplikację podczas rejestrowania zadania w tle
Zanotuj punkt wejścia zadania w tle za pomocą programu Visual Studio:
- W językach C# i C++zanotuj nazwę i przestrzeń nazw klasy zadań w tle określoną w projekcie zadania w tle.
Użyj projektanta manifestu, aby sprawdzić, czy zadanie w tle jest poprawnie zadeklarowane w manifeście pakietu:
- W językach C# i C++atrybut punktu wejścia musi być zgodny z przestrzenią nazw zadań w tle, a następnie nazwą klasy. Na przykład: RuntimeComponent1.MyBackgroundTask.
- Należy również określić wszystkie typy wyzwalaczy używane z zadaniem.
- Plik wykonywalny NIE MOŻE być określony, chyba że używasz ControlChannelTrigger lub PushNotificationTrigger.
Tylko system Windows. Aby wyświetlić punkt wejścia używany przez system Windows do aktywowania zadania w tle, włącz śledzenie debugowania i użyj dziennika zdarzeń systemu Windows.
Jeśli wykonasz tę procedurę, a w dzienniku zdarzeń zostanie wyświetlony nieprawidłowy punkt wejścia lub wyzwalacz zadania w tle, aplikacja nie rejestruje poprawnie zadania w tle. Aby uzyskać pomoc dotyczącą tego zadania, zobacz Rejestrowanie zadania w tle.
- Otwórz podgląd zdarzeń, przechodząc do ekranu startowego i wyszukując eventvwr.exe.
- Przejdź do dzienników aplikacji i usług —>Microsoft —>Windows —>BackgroundTaskInfrastructure w podglądzie zdarzeń.
- W okienku akcji wybierz pozycję Widok —>Pokaż dzienniki analityczne i debugowania, aby włączyć rejestrowanie diagnostyczne.
- Wybierz dziennika diagnostycznego i kliknij Włącz dziennik.
- Teraz spróbuj ponownie zarejestrować i aktywować zadanie w tle przy użyciu aplikacji.
- Wyświetl dzienniki diagnostyczne, aby uzyskać szczegółowe informacje o błędzie. Obejmuje to punkt wejścia zarejestrowany dla zadania w tle.
podgląd zdarzeń 
Zadania w tle i wdrażanie pakietów programu Visual Studio
Jeśli aplikacja korzystająca z zadań w tle jest wdrażana przy użyciu programu Visual Studio, a wersja (wersja główna i/lub pomocnicza) określona w projektancie manifestu zostanie zaktualizowana, a następnie ponowne wdrożenie aplikacji za pomocą programu Visual Studio może spowodować zatrzymanie zadań w tle aplikacji. Można to naprawić w następujący sposób:
- Użyj programu Windows PowerShell, aby wdrożyć zaktualizowaną aplikację (zamiast programu Visual Studio), uruchamiając skrypt wygenerowany obok pakietu.
- Jeśli aplikacja została już wdrożona przy użyciu programu Visual Studio i jej zadania w tle są teraz wstrzymane, uruchom ponownie komputer lub wyloguj się, a następnie zaloguj ponownie, aby zadania w tle aplikacji zaczęły ponownie działać.
- Możesz wybrać opcję debugowania "Zawsze instaluj ponownie mój pakiet", aby uniknąć tego w projektach języka C#.
- Poczekaj, aż aplikacja będzie gotowa do końcowego wdrożenia, aby zwiększać wersję pakietu (nie zmieniaj jej podczas debugowania).
Uwagi
- Przed ponownym zarejestrowaniem zadania w tle upewnij się, że aplikacja sprawdza istniejące rejestracje zadań w tle. Rejestrowanie tego samego zadania w tle wielokrotnie może prowadzić do nieoczekiwanych wyników, uruchamiając zadanie więcej niż raz przy każdym jego wyzwoleniu.
- Jeśli zadanie w tle wymaga dostępu do ekranu blokady, przed próbą debugowania zadania w tle upewnij się, że aplikacja zostanie umieszczona na ekranie blokady. Aby uzyskać informacje na temat określania opcji manifestu dla aplikacji z obsługą ekranu blokady, zobacz Deklarowanie zadań w tle w manifeście aplikacji.
- Parametry rejestracji zadań w tle są weryfikowane w momencie rejestracji. Zwracany jest błąd, jeśli którykolwiek z parametrów rejestracji jest nieprawidłowy. Upewnij się, że aplikacja bezpiecznie obsługuje scenariusze, w których rejestracja zadań w tle kończy się niepowodzeniem — jeśli zamiast tego aplikacja zależy od prawidłowego obiektu rejestracji po próbie zarejestrowania zadania, może to spowodować awarię.
Aby uzyskać więcej informacji na temat debugowania zadania w tle za pomocą programu Visual Studio, zobacz Jak inicjować zdarzenia zawieszenia, wznowienia i działania w tle w aplikacjach platformy UWP.
Tematy pokrewne
- Tworzenie i rejestrowanie zadania w tle poza procesem
- Utwórz i zarejestruj zadanie w tle w procesie
- Zarejestruj zadanie w tle
- Deklarowanie zadań w tle w manifeście aplikacji
- Wytyczne dotyczące zadań w tle
- Jak wyzwalać zdarzenia wstrzymania, wznawiania i w tle w aplikacjach platformy UWP
- Omówienie analizy kodu dla platformy .NET w programie Visual Studio