Rispondere agli eventi di sistema con le attività in backgroundRespond to system events with background tasks

API importantiImportant APIs

Informazioni su come creare un'attività in background che risponde agli eventi SystemTrigger in .Learn how to create a background task that responds to SystemTrigger events.

In questo argomento si presuppone che sia presente una classe di attività in background scritta per la tua app e che tale attività debba essere eseguita in risposta a un evento attivato dal sistema, ad esempio quando cambia la disponibilità di Internet o l'utente esegue l'accesso.This topic assumes that you have a background task class written for your app, and that this task needs to run in response to an event triggered by the system such as when internet availability changes or the user logging in. Questo argomento è incentrato sulla classe SystemTrigger in .This topic focuses on the SystemTrigger class. Per altre informazioni sulla scrittura di una classe di attività in background, vedi Creare e registrare un'attività in background in-process e Creare e registrare un'attività in background out-of-process.More information on writing a background task class is available in Create and register an in-process background task or Create and register an out-of-process background task.

Creare un oggetto SystemTriggerCreate a SystemTrigger object

Nel codice dell’app crea un nuovo oggetto SystemTrigger.In your app code, create a new SystemTrigger object. Il primo parametro, triggerType, specifica il tipo di trigger di eventi del sistema che attiverà l’attività in background.The first parameter, triggerType, specifies the type of system event trigger that will activate this background task. Per un elenco dei tipi di evento, vedere SystemTriggerType.For a list of event types, see SystemTriggerType.

Il secondo parametro, OneShot, specifica se l'attività in background verrà eseguita una sola volta quando si verifica l'evento di sistema la volta successiva oppure ogni volta che si verifica l'evento di sistema fino a quando non viene annullata la registrazione dell'attività.The second parameter, OneShot, specifies whether the background task will run only once the next time the system event occurs or every time the system event occurs until the task is unregistered.

Il codice seguente specifica che l'attività in background viene eseguita ogni volta che Internet diventa disponibile:The following code specifies that the background task runs whenever the Internet becomes available:

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 backgroundRegister the background task

Registra l'attività in background chiamando la funzione di registrazione delle attività in background.Register the background task by calling your background task registration function. Per altre informazioni sulla registrazione delle attività in background, vedi Registrare un'attività in background.For more information on registering background tasks, see Register a background task.

Il codice seguente registra l'attività in background per un processo in background eseguito come out-of-process.The following code registers the background task for a background process that runs out-of-process. Per chiamare un'attività in background eseguita nello stesso processo dell'app host, non devi impostare entrypoint:If you were calling a background task that runs in the same process as the host app, you would not set 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

Piattaforma UWP (Universal Windows Platform) le app devono chiamare RequestAccessAsync prima di registrare i tipi di trigger in background.Universal Windows Platform apps must call RequestAccessAsync before registering any of the background trigger types.

Per garantire che l’app di Windows universale continui a funzionare correttamente dopo il rilascio di un aggiornamento, devi chiamare RemoveAccess e poi chiamare RequestAccessAsync all’avvio dell’app dopo l’aggiornamento.To ensure that your Universal Windows app continues to run properly after you release an update, you must call RemoveAccess and then call RequestAccessAsync when your app launches after being updated. Per altre informazioni, vedi Linee guida per le attività in background.For more information, see Guidelines for background tasks.

Nota

I parametri di registrazione dell'attività in background vengono convalidati al momento della registrazione.Background task registration parameters are validated at the time of registration. Se uno dei parametri di registrazione non è valido, viene restituito un errore.An error is returned if any of the registration parameters are invalid. Assicurati che la tua app gestisca correttamente gli scenari in cui si verifica un errore di registrazione dell'attività in background. Se invece l'app richiede un oggetto registrazione valido dopo il tentativo di registrazione di un'attività, potrebbe arrestarsi in modo anomalo.Ensure that your app gracefully handles scenarios where background task registration fails - if instead your app depends on having a valid registration object after attempting to register a task, it may crash.  

CommentiRemarks

Per una dimostrazione pratica della registrazione dell’attività in background, scarica l’esempio di attività in background.To see background task registration in action, download the background task sample.

Le attività in background possono essere eseguite in risposta a eventi SystemTrigger e MaintenanceTrigger, ma devi comunque Dichiarare le attività in background nel manifesto dell’applicazione.Background tasks can run in response to SystemTrigger and MaintenanceTrigger events, but you still need to Declare background tasks in the application manifest. Devi anche chiamare RequestAccessAsync prima di poter registrare qualsiasi tipo di attività in background.You must also call RequestAccessAsync before registering any background task type.

Le app possono registrare attività in background che rispondono agli eventi TimeTrigger, PushNotificationTriggere NetworkOperatorNotificationTrigger , consentendo loro di fornire la comunicazione in tempo reale con l'utente anche quando l'app non è in primo piano.Apps can register background tasks that respond to TimeTrigger, PushNotificationTrigger, and NetworkOperatorNotificationTrigger events, enabling them to provide real-time communication with the user even when the app is not in the foreground. Per altre informazioni, vedere supportare l'app con attività in background.For more information, see Support your app with background tasks.