将多个触发器设置为后台任务

时间:2016-02-29 09:23:53

标签: c# windows-10 win-universal-app

我在向后台任务设置多个触发器时遇到问题。是否允许为一个任务设置多个触发器?我找不到任何关于使用多个SetTrigger语句的文档。

问题在于,当我运行我的应用程序时,myTrigger会按照我想要的方式触发,但TimeTrigger不会触发。我让它在整个晚上运行但没有任何改变。它还没有开始。

MainPage.xaml.cs中:

builder.SetTrigger(new TimeTrigger(15, false));
builder.SetTrigger(myTrigger);  
...
await myTrigger.RequestAsync();

非常感谢。

编辑(仅限syncTrigger。我正在等待几乎一小时。):

ApplicationTrigger syncTrigger = new ApplicationTrigger();

private void InitBackgroundTasks()
{
    IBackgroundCondition m_BKTaskCondition = new SystemCondition(SystemConditionType.InternetAvailable);

    var triggers = new List<IBackgroundTrigger> { new TimeTrigger(15, false), syncTrigger };
    var conditions = new List<IBackgroundCondition> { m_BKTaskCondition };

    var registrations = RegisterBackgroundTask(typeof(BackgroundSync).ToString(), nameof(BackgroundSync), triggers, conditions).ToList();

    registrations = registrations;
    // Both triggers are null

}

public IEnumerable<BackgroundTaskRegistration> RegisterBackgroundTask(string taskEntryPoint, string TaskName, IReadOnlyList<IBackgroundTrigger> triggers, IReadOnlyList<IBackgroundCondition> conditions)
{
    var builder = new BackgroundTaskBuilder();

    builder.Name = TaskName;
    builder.TaskEntryPoint = taskEntryPoint;

    BackgroundTaskRegistration registeredTask = null;

    foreach (var condition in conditions)
    {
        if (condition != null)
        {
            builder.AddCondition(condition);
        }
    }

    foreach (var trigger in triggers)
    {
        if (trigger != null)
        {
            builder.SetTrigger(trigger);
        }

        try
        {
            registeredTask = builder.Register();
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Error: RegisterBackgroundTask - {0}\n\n", ex.Message);
        }

        yield return registeredTask;
    }
}

TimeTrigger看起来很好,但是syncTrigger没有 - 很奇怪。 enter image description here

0 个答案:

没有答案