Aracılığıyla paylaş


Bakım tetikleyicisi kullan

Önemli API'ler

Cihaz takılıyken arka planda basit kod çalıştırmak için MaintenanceTrigger sınıfını kullanmayı öğrenin.

Bakım tetikleyici nesnesi oluşturma

Bu örnekte, cihaz takılıyken uygulamanızı geliştirmek için arka planda çalıştırabileceğiniz basit bir kodunuz olduğu varsayılır. Bu konu, MaintenanceTriggerkonusuna odaklanır, bu da SystemTriggerile benzerdir.

Arka plan görev sınıfının nasıl yazılacağı hakkında daha fazla bilgi için İşlem içi arka plan görevi oluşturup kaydetme veya İşlem dışı arka plan görevi oluşturup kaydetme'e bakabilirsiniz.

Yeni bir MaintenanceTrigger nesnesi oluşturun. OneShotikinci parametre, bakım görevinin yalnızca bir kez mi yoksa düzenli aralıklarla çalışmaya devam mı olacağını belirtir. OneShot true olarak ayarlanırsa, ilk parametre (FreshnessTime) arka plan görevini zamanlamadan önce beklenmesi gereken dakika sayısını belirtir. OneShot false olarak ayarlanırsa, FreshnessTime arka plan görevinin ne sıklıkta çalışacağını belirtir.

Uyarı

FreshnessTime 15 dakikadan kısa olarak ayarlanırsa, arka plan görevi kaydedilmeye çalışıldığında bir istisna oluşur.

Bu örnek kod, saatte bir çalışan bir tetikleyici oluşturur.

uint waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
uint32_t waitIntervalMinutes{ 60 };
Windows::ApplicationModel::Background::MaintenanceTrigger taskTrigger{ waitIntervalMinutes, false };
unsigned int waitIntervalMinutes = 60;
MaintenanceTrigger ^ taskTrigger = ref new MaintenanceTrigger(waitIntervalMinutes, false);

(İsteğe bağlı) Koşul ekleme

  • Gerekirse, görevin çalıştırılma zamanını kontrol etmek için bir arka plan görevi durumu oluşturun. Koşul, koşul karşılanıncaya kadar arka plan görevinizin çalışmasını engeller. Daha fazla bilgi için bkz. Arka plan görevi çalıştırma koşullarını ayarlama

Bu örnekte, koşul internet mevcut olduğunda (veya mevcut hale geldiğinde) bakımın çalışması için InternetAvailable olarak ayarlanmıştır. Olası arka plan görev koşullarının listesi için bkz. SystemConditionType.

Aşağıdaki kod, bakım görevi oluşturucusunun koşulunu ekler:

SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
    Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);

Arka plan görevini kaydetme

  • Arka plan görevi kayıt işlevinizi çağırarak arka plan görevini kaydedin. Arka plan görevlerini kaydetme hakkında daha fazla bilgi için bkz. Arka plan görevi kaydetme.

Aşağıdaki kod bakım görevini kaydeder. Unutmayın ki, entryPointbelirttiği için arka plan görevinizin uygulamanızdan ayrı bir işlemde çalıştığı varsayılır. Arka plan göreviniz uygulamanızla aynı işlemde çalışıyorsa, entryPointbelirtmezsiniz.

string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName   = "Maintenance background task example";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Maintenance background task example" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName   = "Maintenance background task example";

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

Uyarı

Masaüstü dışındaki tüm cihaz aileleri için cihazın belleği azsa arka plan görevleri sonlandırılabilir. Yetersiz bellek istisnası meydana gelmezse veya uygulama bunu işlemezse, arka plan görevi uyarı olmadan ve OnCanceled olayı tetiklenmeden sonlandırılır. Bu, uygulamanın ön planda kullanıcı deneyimini sağlamaya yardımcı olur. Arka plan göreviniz bu senaryoyla başa çıkabilecek şekilde tasarlanmalıdır.

Uyarı

Evrensel Windows Platformu uygulamaları, arka plan tetikleyici türlerinden herhangi birini kaydetmeden önce RequestAccessAsync çağırmalıdır.

Evrensel Windows uygulamanızın, uygulamanızda bir güncelleme yayınladıktan sonra düzgün çalışmaya devam ettiğinden emin olmak için, RemoveAccess’ü çağırmanız ve ardından uygulamanız güncellendikten sonra başlatıldığında RequestAccessAsync’ü çağırmanız gerekir. Daha fazla bilgi için bkz. Arka plan görevleri için yönergeler.

Uyarı

Arka plan görevi kayıt parametreleri kayıt sırasında doğrulanır. Kayıt parametrelerinden herhangi biri geçersizse bir hata döndürülür. Uygulamanızın arka plan görevi kaydı başarısız olduğunda bu senaryoları doğru bir şekilde işlediğinden emin olun. Aksi takdirde, uygulamanız bir görevi kaydetmeye çalışırken geçerli bir kayıt nesnesine bağlıysa, çökebilir.