2015-05-24 17 views
8

Windows 10 IOT Core ile bir başsız Ahududu Pi 2 üzerinde bir UWP uygulaması kullanmak için temel olarak yeni bir UWP uygulaması oluşturan arka plan uygulama şablonunu kullanabiliriz başlangıcında yürütülen bir arka plan görevi:Windows 10 IOT Yaşam Döngüsü (veya: bir arka plan uygulamasının sonlandırılması)

uygulamanın çalışır tutmak için, aşağıdaki başlatma kodu kullanabilirsiniz yılında
<Extensions> 
    <Extension Category="windows.backgroundTasks" EntryPoint="BackgroundApplication1.StartupTask"> 
    <BackgroundTasks> 
     <iot:Task Type="startup" /> 
    </BackgroundTasks> 
    </Extension> 
</Extensions> 

: çalışan

public void Run(IBackgroundTaskInstance taskInstance) 
{ 
    BackgroundTaskDeferral Deferral = taskInstance.GetDeferral(); 

    //Execute arbitrary code here. 
} 

Bu şekilde uygulama tutar ve OS herhangi bir zaman aşımından sonra uygulamayı öldürmez IOT evren.

Şimdiye kadar, harika.

Ancak: Ben cihaz kapanır (veya uygulama 'nazikçe' yakın istenir düzgün arka plan uygulamayı kapatmak için mümkün istiyorum abone olabileceğiniz 'normal' UWP uygulamasında

. OnSuspending olay.
Nasıl bu arka plan senaryoda yakın yakın bir kapatma hakkında bir bildirim/alabilirim?

Yardım büyük takdir.
peşin!
-Simon

cevap

8

İptal edilen etkinliği işlemeniz gerekiyor. Cihaz düzgün bir şekilde kapatılırsa, arka plan görevi iptal edilir. Windows ayrıca, kayıtsız olmaları durumunda görevleri iptal eder.

BackgroundTaskDeferral _defferal; 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     _defferal = taskInstance.GetDeferral(); 
     taskInstance.Canceled += TaskInstance_Canceled; 
    } 

    private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason) 
    { 
     //a few reasons that you may be interested in. 
     switch (reason) 
     { 
      case BackgroundTaskCancellationReason.Abort: 
       //app unregistered background task (amoung other reasons). 
       break; 
      case BackgroundTaskCancellationReason.Terminating: 
       //system shutdown 
       break; 
      case BackgroundTaskCancellationReason.ConditionLoss: 
       break; 
      case BackgroundTaskCancellationReason.SystemPolicy: 
       break; 
     } 
     _defferal.Complete(); 
    } 

Cancellation Reasons

Canceled Event

İlgili konular