Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtige APIs
BackgroundTaskRegistrationGroup-Klasse
Hintergrundaufgaben können jetzt in einer Gruppe registriert werden, die Sie sich als logischen Namespace vorstellen können. Diese Isolation trägt dazu bei, sicherzustellen, dass unterschiedliche Komponenten einer App sowie verschiedene Bibliotheken die Registrierung der Hintergrundaufgaben nicht gegenseitig beeinträchtigen.
Wenn eine App und das von ihr verwendete Framework (oder die Bibliothek) eine Hintergrundaufgabe mit demselben Namen registrieren, kann die App versehentlich die Registrierungen der Hintergrundaufgaben des Frameworks löschen. App-Autoren könnten auch versehentlich Framework- und Bibliotheks-Hintergrundaufgabenregistrierungen entfernen, da sie die Registrierung aller registrierten Hintergrundaufgaben mithilfe von BackgroundTaskRegistration.AllTasks aufheben konnten. Mit Gruppen können Sie Ihre Registrierungen für Hintergrundaufgaben isolieren, sodass dies nicht geschieht.
Eigenschaften von Gruppen
- Gruppen können durch eine GUID eindeutig identifiziert werden. Sie können auch einen zugeordneten freundlichen Namen haben, der beim Debuggen einfacher zu lesen ist.
- Mehrere Hintergrundaufgaben können in einer Gruppe registriert werden.
- Hintergrundaufgaben, die in einer Gruppe registriert sind, werden in BackgroundTaskRegistration.AllTasksnicht angezeigt. Apps, die derzeit BackgroundTaskRegistration.AllTasks- verwenden, um die Registrierung ihrer Aufgaben aufzuheben, werden die Registrierung von in einer Gruppe registrierten Hintergrundaufgaben nicht versehentlich aufheben. Siehe Aufheben der Registrierung von Hintergrundaufgaben in einer Gruppe unten, um zu sehen, wie Sie die Registrierung aller Hintergrundtrigger aufheben, die als Teil einer Gruppe registriert wurden.
- Jede Registrierung von Hintergrundaufgaben hat eine Gruppeneigenschaft, um zu bestimmen, mit welcher Gruppe sie verknüpft ist.
- Durch das Registrieren von In-Process Hintergrundaufgaben bei einer Gruppe erfolgt die Aktivierung über das Ereignis BackgroundTaskRegistrationGroup.BackgroundActivated anstelle von Application.OnBackgroundActivated.
Registrieren einer Hintergrundaufgabe in einer Gruppe
Im Folgenden wird gezeigt, wie Sie eine Hintergrundaufgabe (ausgelöst durch eine Zeitzonenänderung in diesem Beispiel) als Teil einer Gruppe registrieren.
private const string groupFriendlyName = "myGroup";
private const string groupId = "3F2504E0-4F89-41D3-9A0C-0305E82C3301";
private const string myTaskName = "My Background Trigger";
public static void RegisterBackgroundTaskInGroup()
{
BackgroundTaskRegistrationGroup group = BackgroundTaskRegistration.GetTaskGroup(groupId);
bool isTaskRegistered = false;
// See if this task already belongs to a group
if (group != null)
{
foreach (var taskKeyValue in group.AllTasks)
{
if (taskKeyValue.Value.Name == myTaskName)
{
isTaskRegistered = true;
break;
}
}
}
// If the background task is not in a group, register it
if (!isTaskRegistered)
{
if (group == null)
{
group = new BackgroundTaskRegistrationGroup(groupId, groupFriendlyName);
}
var builder = new BackgroundTaskBuilder();
builder.Name = myTaskName;
builder.TaskGroup = group; // we specify the group, here
builder.SetTrigger(new SystemTrigger(SystemTriggerType.TimeZoneChange, false));
// Because builder.TaskEntryPoint is not specified, OnBackgroundActivated() will be raised when the background task is triggered
BackgroundTaskRegistration task = builder.Register();
}
}
Aufheben der Registrierung von Hintergrundaufgaben in einer Gruppe
Im Folgenden wird gezeigt, wie Sie die Registrierung von Hintergrundaufgaben aufheben, die als Teil einer Gruppe registriert wurden. Da hintergrundaufgaben, die in einer Gruppe registriert sind, nicht in BackgroundTaskRegistration.AllTasksangezeigt werden, müssen Sie die Gruppen durchlaufen, die für jede Gruppe registrierten Hintergrundaufgaben suchen und die Registrierung aufheben.
private static void UnRegisterAllTasks()
{
// Unregister tasks that are part of a group
foreach (var groupKeyValue in BackgroundTaskRegistration.AllTaskGroups)
{
foreach (var groupedTask in groupKeyValue.Value.AllTasks)
{
groupedTask.Value.Unregister(true); // passing true to cancel currently running instances of this background task
}
}
// Unregister tasks that aren't part of a group
foreach(var taskKeyValue in BackgroundTaskRegistration.AllTasks)
{
taskKeyValue.Value.Unregister(true); // passing true to cancel currently running instances of this background task
}
}
Registrieren persistenter Ereignisse
Bei der Verwendung von Hintergrundaufgabenregistrierungsgruppen für In-Process-Hintergrundaufgaben werden die Hintergrundaktivierungen auf das Ereignis der Gruppe statt auf das Ereignis des Application- oder CoreApplication-Objekts gerichtet. Dadurch können mehrere Komponenten in Ihrer App die Aktivierung behandeln, anstatt alle Aktivierungscodepfade im Application-Objekt zu platzieren. Im Folgenden wird gezeigt, wie Sie sich für das hintergrundaktivierte Ereignis der Gruppe registrieren. Überprüfen Sie zunächst BackgroundTaskRegistration.GetTaskGroup, um festzustellen, ob die Gruppe bereits registriert wurde. Wenn nicht, dann erstellen Sie eine neue Gruppe mit Ihrer ID und einem freundlichen Namen. Registrieren Sie dann einen Ereignishandler für das BackgroundActivated-Ereignis in der Gruppe.
void RegisterPersistentEvent()
{
var group = BackgroundTaskRegistration.GetTaskGroup(groupId);
if (group == null)
{
group = new BackgroundTaskRegistrationGroup(groupId, groupFriendlyName);
}
group.BackgroundActivated += MyEventHandler;
}