Rispondere agli eventi di sistema con le attività in background

API importanti

Informazioni su come creare un'attività in background che risponde agli eventi di SystemTrigger.

Questo argomento presuppone che si abbia una classe di attività in background scritta per l'app e che questa attività debba essere eseguita in risposta a un evento attivato dal sistema, ad esempio quando la disponibilità Internet cambia o l'utente esegue l'accesso. Questo argomento è incentrato sulla classe SystemTrigger. Altre informazioni sulla scrittura di una classe di attività in background sono disponibili in Creare e registrare un'attività in background in-process o Creare e registrare un'attività in background out-of-process.

Creare un oggetto SystemTrigger

Nel codice dell'app creare un nuovo oggetto SystemTrigger. Il primo parametro, triggerType, specifica il tipo di trigger di eventi di sistema che attiva questa attività in background. Per un elenco dei tipi di evento, vedere SystemTriggerType.

Il secondo parametro, OneShot, specifica se l'attività in background verrà eseguita una sola volta la volta successiva che si verifica l'evento di sistema o ogni volta che l'evento di sistema si verifica fino a quando l'attività non viene annullata.

Il codice seguente specifica che l'attività in background viene eseguita ogni volta che Internet diventa disponibile:

SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
Windows::ApplicationModel::Background::SystemTrigger internetTrigger{
    Windows::ApplicationModel::Background::SystemTriggerType::InternetAvailable, false};
SystemTrigger ^ internetTrigger = ref new SystemTrigger(SystemTriggerType::InternetAvailable, false);

Registrare l'attività in background

Registrare l'attività in background richiamando la funzione di registrazione dell'attività in background. Per maggiori informazioni sulla registrazione delle attività in background, vedere Registrare un'attività in background.

Il codice seguente registra l'attività in background per un processo in background che viene eseguito out-of-process. Se si chiama un'attività in background eseguita nello stesso processo dell'app host, non è necessario impostare entrypoint:

string entryPoint = "Tasks.ExampleBackgroundTaskClass"; // Namespace name, '.', and the name of the class containing the background task
string taskName   = "Internet-based background task";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" }; // don't set for in-process background tasks.
std::wstring taskName{ L"Internet-based background task" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass"; // don't set for in-process background tasks
String ^ taskName   = "Internet-based background task";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);

Nota

Le app della piattaforma UWP (Universal Windows Platform) devono chiamare RequestAccessAsync prima di registrare uno dei tipi di trigger in background.

Per assicurarsi che l'app di Universal Windows continui a funzionare correttamente dopo il rilascio di un aggiornamento, è necessario chiamare RemoveAccess e quindi chiamare RequestAccessAsync quando l'app viene avviata dopo essere stata aggiornata. Per maggiori informazioni, vedere Linee guida per le attività in background.

Nota

I parametri di registrazione delle attività in background vengono convalidati al momento della registrazione. Se uno dei parametri di registrazione non è valido, viene restituito un errore. Assicurarsi che l'app gestisca correttamente gli scenari in cui la registrazione delle attività in background ha esito negativo. Se invece l'app dipende dalla presenza di un oggetto di registrazione valido dopo il tentativo di registrazione di un'attività, potrebbe verificarsi un arresto anomalo.  

Osservazioni:

Per visualizzare la registrazione dell'attività in background in azione, scaricare l'esempio di attività in background.

Le attività in background possono essere eseguite in risposta agli eventi SystemTrigger e MaintenanceTrigger, ma è comunque necessario dichiarare le attività in background tasks nel manifesto dell'applicazione. È anche necessario chiamare RequestAccessAsync prima di registrare qualsiasi tipo di attività in background.

Le app possono registrare attività in background che rispondono agli eventi TimeTrigger, PushNotificationTrigger e NetworkOperatorNotificationTrigger, consentendo loro di fornire comunicazioni in tempo reale con l'utente anche quando l'app non è in primo piano. Per maggiori informazioni, vedere Supportare l'app con attività in background.