我在向后台任务设置多个触发器时遇到问题。是否允许为一个任务设置多个触发器?我找不到任何关于使用多个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;
}
}