2016-12-06 5 views
1

バックグラウンドタスクまたは複数のトリガーに(SetTrigger()メソッドを使用して)1つのトリガーしか設定できない場合は、MSDNのドキュメントで見つけることができません。私はタイマーでタスクをトリガしたい場合は、また、プログラムによっても、私はTimerTriggerとApplicationTriggerが必要でしょうか?また、AddCondition()で複数の条件を設定することは可能ですか?UWPのBackgroundTaskに複数のトリガーを設定できますか?

答えて

3

バックグラウンドタスクの登録には1つのトリガしかない場合がありますが、同じバックグラウンドタスクに対して複数の登録を行うことができます。

必要な条件はいくつでも設定できます。

たとえば、ここではTimeTriggerUserPresentの両方がトリガーされ、インターネット接続が可能な場合にトリガーされます。どちらの場合でもMyBackgroundTask.Run()が呼び出されます。

public sealed class MyBackgroundTask : IBackgroundTask 
{ 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     // your task code here 
    } 

    public void Register() 
    { 
     RegisterWithTrigger(BackgroundTaskSuffixTime,   new TimeTrigger((uint) RefreshInterval.TotalMinutes, false)); 
     RegisterWithTrigger(BackgroundTaskSuffixUserPresent, new SystemTrigger(SystemTriggerType.UserPresent, false)); 
    } 

    private static IBackgroundTaskRegistration RegisterWithTrigger(string taskSuffix, IBackgroundTrigger trigger) 
    { 
     var taskEntryPoint = typeof(MyBackgroundTask).FullName; 
     var taskName  = taskEntryPoint + taskSuffix; 

     var registration   = BackgroundTaskRegistration.AllTasks.Select(x => x.Value).FirstOrDefault(x => x.Name == taskName); 
     if(registration != null) return registration; 

     var taskBuilder    = new BackgroundTaskBuilder(); 
     taskBuilder.Name   = taskName; 
     taskBuilder.TaskEntryPoint = taskEntryPoint; 
     taskBuilder.SetTrigger(trigger); 
     taskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable)); 
     return taskBuilder.Register(); 
    } 
} 

アプリケーションマニフェスト内のすべての適切なトリガを宣言することを忘れないでください:

<Extension Category="windows.backgroundTasks" EntryPoint="Background.MyBackgroundTask"> 
    <BackgroundTasks> 
    <Task Type="systemEvent" /> 
    <Task Type="timer" /> 
    </BackgroundTasks> 
</Extension> 
+0

が同じバックグラウンドタスクが同じtaskEntryPointによって定義され 「あなたは同じバックグラウンドタスクのためのいくつかの登録を持つことができます」またはtaskName? – nmrlqa4

+0

エントリポイントは同じですが、タスク名は異なります。 – Vincent

関連する問題