Aracılığıyla paylaş


Windows uygulamalarında arka plan görevlerini kullanma

Bu makalede, arka plan görevlerini kullanmaya genel bir bakış sağlanır ve WinUI uygulamasında yeni bir arka plan görevinin nasıl oluşturulacağı açıklanır. Arka plan görevleri olan UWP uygulamalarınızı WinUI'ye geçirme hakkında bilgi için bkz. Windows Uygulama SDK'sı Arka Plan görev geçiş stratejisi.

Windows Uygulama SDK'sında BackgroundTaskBuilder

Arka plan görevleri, kullanıcı arabirimi olmadan arka planda çalışan uygulama bileşenleridir. Dosyaları indirme, verileri eşitleme, bildirim gönderme veya kutucukları güncelleştirme gibi eylemler gerçekleştirebilirler. Bunlar zaman, sistem değişiklikleri, kullanıcı eylemleri veya anında iletme bildirimleri gibi çeşitli olaylar tarafından tetiklenebilir. Bu görevler, uygulama çalışır durumda olmadığında bile ilgili tetikleyici gerçekleştiğinde yürütülebilir.

Windows Çalışma Zamanı (WinRT) BackgroundTaskBuilder UWP uygulamaları için tasarlanmıştır ve arka plan görev tetikleyicilerinin çoğu tam güven COM Bileşenleri için desteklenmez. Bunlar yalnızca bir backgroundtaskhost işlemle başlatılan WinRT bileşenlerine kaydedildiğinde desteklenir. Bu nedenle, Windows Uygulama SDK'sı masaüstü uygulamaları arka plan görev tetikleyicileriyle başlatılacak tam güven COM bileşenlerini doğrudan kaydedemez. Projeye WinRT bileşenlerini dahil etmeyi içeren bir geçici çözüm gerektirirler. Windows Uygulama SDK'sı API'sindeki BackgroundTaskBuilder bu geçici çözümü önler, böylece WinUI ve Windows Uygulama SDK'sı kullanan diğer masaüstü uygulamaları tam güven COM bileşenlerini doğrudan arka plan görevlerine kaydedebilir.

Arka plan görevini kaydetme

Aşağıdaki örnek, Windows App SDK'si BackgroundTaskBuilder kullanarak tam güvenli bir COM bileşeni için bir arka plan görevi kaydeder. Daha fazla bilgi için Bkz. Arka plan görevi geçiş stratejisi kılavuzu.

Arka plan görevi oluşturmak ve kaydetmek için C++ kodu aşağıdaki gibidir:

//Using the Windows App SDK API for BackgroundTaskBuilder
winrt::Microsoft::Windows::ApplicationModel::Background::BackgroundTaskBuilder builder;
SystemTrigger trigger = SystemTrigger(SystemTriggerType::TimeZoneChange, false);
auto backgroundTrigger = trigger.as<IBackgroundTrigger>();
builder.SetTrigger(backgroundTrigger);
builder.AddCondition(SystemCondition(SystemConditionType::InternetAvailable));
builder.SetTaskEntryPointClsid(classGuid);
builder.Register(); 

C# dilinde arka plan görevi oluşturmak ve kaydetmek için kod aşağıdaki gibidir:

//Using the Windows App SDK API for BackgroundTaskBuilder
var builder = new Microsoft.Windows.ApplicationModel.Background.BackgroundTaskBuilder();
var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false);
var backgroundTrigger = trigger as IBackgroundTrigger;
builder.SetTrigger(backgroundTrigger);
builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
builder.SetTaskEntryPointClsid(classGuid);
builder.Register();

Arka plan görevi için karşılık gelen paket bildirimi girdisi aşağıdaki gibidir:

<Extension Category="windows.backgroundTasks" EntryPoint="Microsoft.Windows.ApplicationModel.Background.UniversalBGTask.Task">
    <BackgroundTasks>
        <Task Type="general"/>
    </BackgroundTasks>
</Extension>

GitHub'da tam bir WinUI arka plan görevi kayıt örneği bulunabilir.