Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tugas latar belakang memungkinkan aplikasi Anda menjalankan kode saat aplikasi tidak berada di latar depan. Dalam aplikasi SDK Aplikasi Windows desktop, aktivitas latar belakang memiliki lebih banyak fleksibilitas daripada di aplikasi UWP, tetapi Anda masih harus mengelolanya secara bertanggung jawab untuk memastikan pengalaman yang baik bagi pengguna Anda.
Important
Aplikasi SDK Aplikasi Windows desktop tidak tunduk pada pembatasan eksekusi latar belakang yang sama dengan aplikasi UWP. Aplikasi desktop dapat menjalankan utas latar belakang dengan bebas, mempertahankan tugas yang berjalan lama, dan menggunakan pola utas .NET standar. Namun, menjadi warga negara yang baik dari sistem berarti meminimalkan pekerjaan yang tidak perlu ketika pengguna tidak secara aktif menggunakan aplikasi Anda.
Praktik terbaik untuk aktivitas latar belakang
Ikuti panduan ini untuk menjaga aplikasi Anda tetap efisien:
Mengurangi pekerjaan saat pengguna tidak berinteraksi dengan aplikasi Anda
Saat pengguna beralih ke aplikasi lain atau meminimalkan jendela Anda, kurangi frekuensi timer, polling jaringan, dan pekerjaan latar belakang lainnya. Ini menghemat baterai dan membebaskan sumber daya sistem untuk aplikasi yang digunakan pengguna secara aktif.
Menggunakan pola penjadwalan yang efisien
Gunakan penjadwalan berbasis timer daripada loop polling yang ketat. Untuk pekerjaan berkala, gunakan DispatcherTimer atau System.Threading.Timer dengan interval yang sesuai dengan skenario Anda.
private DispatcherTimer _updateTimer;
private void MainWindow_Activated(object sender, WindowActivatedEventArgs args)
{
if (args.WindowActivationState == WindowActivationState.Deactivated)
{
// Window is no longer active — slow down updates.
_updateTimer.Interval = TimeSpan.FromSeconds(30);
}
else
{
// Window is active — use normal update rate.
_updateTimer.Interval = TimeSpan.FromSeconds(2);
}
}
Menanggapi status daya dan baterai
Periksa status daya sistem dan sesuaikan perilaku aplikasi Anda. Kurangi aktivitas latar belakang saat perangkat berjalan pada baterai dan pertimbangkan untuk menugaskan pekerjaan yang tidak penting hingga perangkat dicolokkan.
// Check power status using Windows.System.Power
var batteryStatus = Windows.System.Power.PowerManager.BatteryStatus;
var energySaverStatus = Windows.System.Power.PowerManager.EnergySaverStatus;
if (energySaverStatus == Windows.System.Power.EnergySaverStatus.On)
{
// Reduce background work when Battery Saver is active.
DisableNonEssentialUpdates();
}
void DisableNonEssentialUpdates()
{
// Pause non-essential timers, syncs, and animations here.
}
Membatalkan pekerjaan latar belakang saat aplikasi ditutup
Saat aplikasi Anda ditutup, batalkan semua tugas latar belakang yang tersisa menggunakan pola CancellationToken. Ini mencegah aplikasi Anda tetap menggunakan sumber daya sistem setelah aplikasi tidak lagi terlihat.
private CancellationTokenSource _cts = new();
private async Task DoBackgroundWorkAsync()
{
while (!_cts.Token.IsCancellationRequested)
{
await Task.Delay(TimeSpan.FromSeconds(10), _cts.Token);
// Perform periodic work.
}
}
private void MainWindow_Closed(object sender, WindowEventArgs args)
{
_cts.Cancel();
}
Gunakan tugas latar belakang dengan identitas paket
Jika aplikasi Anda dipaketkan dengan MSIX, Anda juga dapat mendaftarkan tugas latar belakang yang berjalan sebagai respons terhadap pemicu sistem (seperti perubahan status jaringan, zona waktu, atau kehadiran pengguna). Tugas-tugas ini menggunakan API yang sama yang BackgroundTaskBuilder tersedia di UWP. Untuk informasi selengkapnya, lihat Mendukung aplikasi Anda dengan tugas latar belakang.
Note
Aplikasi paket (MSIX) dapat digunakan BackgroundTaskBuilder untuk pekerjaan yang dipicu sistem. Aplikasi desktop yang tidak dikemas harus menggunakan pola utas .NET standar sebagai gantinya.
Konten terkait
Windows developer