Membuat dan mendaftarkan tugas latar belakang dalam proses

API penting

Topik ini menunjukkan cara membuat dan mendaftarkan tugas latar belakang yang berjalan dalam proses yang sama dengan aplikasi Anda.

Tugas latar belakang dalam proses lebih mudah diterapkan daripada tugas latar belakang di luar proses. Namun, mereka kurang tangguh. Jika kode yang berjalan dalam tugas latar belakang dalam proses mengalami crash, kode tersebut akan menghapus aplikasi Anda. Perhatikan juga bahwa DeviceUseTrigger, DeviceServicingTrigger , dan IoTStartupTask tidak dapat digunakan dengan model dalam proses. Mengaktifkan tugas latar belakang VoIP dalam aplikasi Anda juga tidak dimungkinkan. Pemicu dan tugas ini masih didukung menggunakan model tugas latar belakang di luar proses.

Ketahuilah bahwa aktivitas latar belakang dapat dihentikan bahkan saat berjalan di dalam proses latar depan aplikasi jika berjalan melewati batas waktu eksekusi. Untuk beberapa tujuan, ketahanan memisahkan pekerjaan menjadi tugas latar belakang yang berjalan dalam proses terpisah masih berguna. Menjaga latar belakang berfungsi sebagai tugas yang terpisah dari aplikasi latar depan mungkin merupakan opsi terbaik untuk pekerjaan yang tidak memerlukan komunikasi dengan aplikasi latar depan.

Fundamental

Model dalam proses meningkatkan siklus hidup aplikasi dengan pemberitahuan yang ditingkatkan saat aplikasi Anda berada di latar depan atau di latar belakang. Dua peristiwa baru tersedia dari objek Aplikasi untuk transisi ini: EnteredBackground dan LeavingBackground. Peristiwa ini sesuai dengan siklus hidup aplikasi berdasarkan status visibilitas aplikasi Anda Baca selengkapnya tentang peristiwa ini dan bagaimana peristiwa tersebut memengaruhi siklus hidup aplikasi pada siklus hidup Aplikasi.

Pada tingkat tinggi, Anda akan menangani peristiwa EnteredBackground untuk menjalankan kode Anda yang akan dijalankan saat aplikasi Anda berjalan di latar belakang, dan menangani LeavingBackground untuk mengetahui kapan aplikasi Anda telah pindah ke latar depan.

Daftarkan pemicu tugas latar belakang Anda

Aktivitas latar belakang dalam proses didaftarkan sama dengan aktivitas latar belakang di luar proses. Semua pemicu latar belakang dimulai dengan pendaftaran menggunakan BackgroundTaskBuilder. Penyusun memudahkan untuk mendaftarkan tugas latar belakang dengan mengatur semua nilai yang diperlukan di satu tempat:

var builder = new BackgroundTaskBuilder();
builder.Name = "My Background Trigger";
builder.SetTrigger(new TimeTrigger(15, true));
// Do not set builder.TaskEntryPoint for in-process background tasks
// Here we register the task and work will start based on the time trigger.
BackgroundTaskRegistration task = builder.Register();

Catatan

Aplikasi Windows universal harus memanggil RequestAccessAsync sebelum mendaftarkan salah satu jenis pemicu latar belakang. Untuk memastikan bahwa aplikasi Universal Windows Anda terus berjalan dengan benar setelah merilis pembaruan, Anda harus memanggil RemoveAccess lalu memanggil RequestAccessAsync saat aplikasi Anda diluncurkan setelah diperbarui. Untuk informasi selengkapnya, lihat Panduan untuk tugas latar belakang.

Untuk aktivitas latar belakang dalam proses, Anda tidak mengatur TaskEntryPoint. Biarkan kosong memungkinkan titik masuk default, metode baru yang dilindungi pada objek Aplikasi yang disebut OnBackgroundActivated().

Setelah pemicu terdaftar, pemicu akan diaktifkan berdasarkan jenis pemicu yang diatur dalam metode SetTrigger . Dalam contoh di atas TimeTrigger digunakan, yang akan menembak lima belas menit sejak terdaftar.

Tambahkan kondisi untuk mengontrol kapan tugas Anda akan berjalan (opsional)

Anda dapat menambahkan kondisi untuk mengontrol kapan tugas Anda akan berjalan setelah peristiwa pemicu terjadi. Misalnya, jika Anda tidak ingin tugas berjalan hingga pengguna ada, gunakan kondisi UserPresent. Untuk daftar kemungkinan kondisi, lihat SystemConditionType.

Kode sampel berikut menetapkan kondisi yang mengharuskan pengguna untuk hadir:

builder.AddCondition(new SystemCondition(SystemConditionType.UserPresent));

Tempatkan kode aktivitas latar belakang Anda di OnBackgroundActivated()

Letakkan kode aktivitas latar belakang Anda di OnBackgroundActivated untuk merespons pemicu latar belakang Anda saat diaktifkan. OnBackgroundActivated dapat diperlakukan seperti IBackgroundTask.Run. Metode ini memiliki parameter BackgroundActivatedEventArgs , yang berisi semua yang dikirimkan metode Run . Misalnya, di App.xaml.cs:

using Windows.ApplicationModel.Background;

...

sealed partial class App : Application
{
  ...

  protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
  {
      base.OnBackgroundActivated(args);
      IBackgroundTaskInstance taskInstance = args.TaskInstance;
      DoYourBackgroundWork(taskInstance);  
  }
}

Untuk contoh OnBackgroundActivated yang lebih kaya, lihat Mengonversi layanan aplikasi untuk dijalankan dalam proses yang sama dengan aplikasi hostnya.

Menangani kemajuan dan penyelesaian tugas latar belakang

Kemajuan dan penyelesaian tugas dapat dipantau dengan cara yang sama seperti untuk tugas latar belakang multi-proses (lihat Memantau kemajuan dan penyelesaian tugas latar belakang) tetapi Anda mungkin akan menemukan bahwa Anda dapat dengan lebih mudah melacaknya dengan menggunakan variabel untuk melacak status kemajuan atau penyelesaian di aplikasi Anda. Ini adalah salah satu keuntungan memiliki kode aktivitas latar belakang Anda yang berjalan dalam proses yang sama dengan aplikasi Anda.

Menangani pembatalan tugas latar belakang

Tugas latar belakang dalam proses dibatalkan dengan cara yang sama seperti tugas latar belakang di luar proses (lihat Menangani tugas latar belakang yang dibatalkan). Ketahuilah bahwa penanganan aktivitas BackgroundActivated Anda harus keluar sebelum pembatalan terjadi, atau seluruh proses akan dihentikan. Jika aplikasi latar depan Anda ditutup secara tiba-tiba saat Anda membatalkan tugas latar belakang, verifikasi bahwa handler Anda keluar sebelum pembatalan terjadi.

Manifes

Tidak seperti tugas latar belakang di luar proses, Anda tidak diharuskan menambahkan informasi tugas latar belakang ke manifes paket untuk menjalankan tugas latar belakang dalam proses.

Ringkasan dan langkah berikutnya

Anda sekarang harus memahami dasar-dasar cara menulis tugas latar belakang dalam proses.

Lihat topik terkait berikut untuk referensi API, panduan konseptual tugas latar belakang, dan instruksi yang lebih rinci untuk menulis aplikasi yang menggunakan tugas latar belakang.

Topik instruksi tugas latar belakang terperinci

Panduan tugas latar belakang

Referensi API Tugas Latar Belakang