Menanggapi peristiwa sistem dengan tugas latar belakang

API Penting

Pelajari cara membuat tugas latar belakang yang merespons peristiwa SystemTrigger .

Topik ini mengasumsikan bahwa Anda memiliki kelas tugas latar belakang yang ditulis untuk aplikasi Anda, dan bahwa tugas ini perlu dijalankan sebagai respons terhadap peristiwa yang dipicu oleh sistem seperti saat ketersediaan internet berubah atau pengguna masuk. Topik ini berfokus pada kelas SystemTrigger . Informasi lebih lanjut tentang menulis kelas tugas latar belakang tersedia di Buat dan daftarkan tugas latar belakang dalam proses atau Buat dan daftarkan tugas latar belakang di luar proses.

Membuat objek SystemTrigger

Di kode aplikasi Anda, buat objek SystemTrigger baru. Parameter pertama, triggerType, menentukan jenis pemicu peristiwa sistem yang akan mengaktifkan tugas latar belakang ini. Untuk daftar jenis acara, lihat SystemTriggerType.

Parameter kedua, OneShot, menentukan apakah tugas latar belakang hanya akan berjalan sekali pada saat peristiwa sistem terjadi atau setiap kali peristiwa sistem terjadi sampai tugas tidak terdaftar.

Kode berikut menentukan bahwa tugas latar belakang berjalan setiap kali Internet tersedia:

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);

Mendaftarkan tugas latar belakang

Daftarkan tugas latar belakang dengan memanggil fungsi pendaftaran tugas latar belakang Anda. Untuk informasi selengkapnya tentang mendaftarkan tugas latar belakang, lihat Mendaftarkan tugas latar belakang.

Kode berikut mendaftarkan tugas latar belakang untuk proses latar belakang yang kehabisan proses. Jika Anda memanggil tugas latar belakang yang berjalan dalam proses yang sama dengan aplikasi host, Anda tidak akan mengatur 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);

Catatan

Aplikasi Universal Windows Platform harus memanggil RequestAccessAsync sebelum mendaftarkan salah satu jenis pemicu latar belakang.

Untuk memastikan bahwa aplikasi Universal Windows Anda terus berjalan dengan baik setelah Anda merilis pembaruan, Anda harus memanggil RemoveAccess dan kemudian memanggil RequestAccessAsync saat aplikasi Anda diluncurkan setelah diperbarui. Untuk informasi selengkapnya, lihat Panduan untuk tugas latar belakang.

Catatan

Parameter pendaftaran tugas latar belakang divalidasi pada saat pendaftaran. Kesalahan dikembalikan jika salah satu parameter pendaftaran tidak valid. Pastikan aplikasi Anda menangani skenario dengan anggun di mana pendaftaran tugas latar belakang gagal - jika aplikasi Anda bergantung pada memiliki objek pendaftaran yang valid setelah mencoba mendaftarkan tugas, itu mungkin macet.  

Keterangan

Untuk melihat pendaftaran tugas latar belakang beraksi, unduh sampel tugas latar belakang.

Tugas latar belakang dapat berjalan sebagai respons terhadap peristiwa SystemTrigger dan MaintenanceTrigger , tetapi Anda masih perlu Mendeklarasikan tugas latar belakang dalam manifes aplikasi. Anda juga harus menghubungi RequestAccessAsync sebelum mendaftarkan jenis tugas latar belakang apa pun.

Aplikasi dapat mendaftarkan tugas latar belakang yang merespons peristiwa TimeTrigger, PushNotificationTrigger, dan NetworkOperatorNotificationTrigger , memungkinkan mereka untuk menyediakan komunikasi real-time dengan pengguna bahkan ketika aplikasi tidak berada di latar depan. Untuk informasi selengkapnya, lihat Mendukung aplikasi Anda dengan tugas latar belakang.