取消后台任务只会让它暂停
Canceling background task only makes it go suspended
我取消注册我的任务(我删除了 If 以确保删除所有任务。):
foreach (var taskA in BackgroundTaskRegistration.AllTasks)
{
//if (taskA.Value.Name == exampleTaskName)
{
taskA.Value.Unregister(true);
}
}
然后我尝试重新创建它,并检查它是否不存在:
private async void LaunchBackground()
{
await BackgroundExecutionManager.RequestAccessAsync();
foreach (var taskA in BackgroundTaskRegistration.AllTasks)
{
if (taskA.Value.Name == exampleTaskName)
{
await new ApplicationTrigger().RequestAsync();
return;
}
}
var builder = new BackgroundTaskBuilder();
builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Background.BackgroundTask";
ApplicationTrigger _AppTrigger = new ApplicationTrigger();
builder.SetTrigger(_AppTrigger);
builder.Register();
await _AppTrigger.RequestAsync();
}
我的任务现在只是延迟并做一些其他事情,取消时释放它:
public void Run(IBackgroundTaskInstance taskInstance)
{
_deferral = taskInstance.GetDeferral();
taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);
AddWatched();
}
private void OnCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
{
_deferral.Complete();
}
但是当我尝试取消和注销任务时,它只是挂起。当我再次启动它时,它表现得很奇怪(我认为现在有两个实例,它们都试图同时做同样的事情)。
理想情况下,我希望能够终止后台任务而不是后台任务 - 或者如果这不起作用,如果任务被暂停,它应该被取消暂停而不是创建另一个任务并且旧任务被取消暂停.
如果您想取消,请在您应用的 ApplicationSettings 中设置一个布尔值 属性。
在您的后台任务中,在执行期间定期检查此 属性,如果设置,则取消该过程。
我取消注册我的任务(我删除了 If 以确保删除所有任务。):
foreach (var taskA in BackgroundTaskRegistration.AllTasks)
{
//if (taskA.Value.Name == exampleTaskName)
{
taskA.Value.Unregister(true);
}
}
然后我尝试重新创建它,并检查它是否不存在:
private async void LaunchBackground()
{
await BackgroundExecutionManager.RequestAccessAsync();
foreach (var taskA in BackgroundTaskRegistration.AllTasks)
{
if (taskA.Value.Name == exampleTaskName)
{
await new ApplicationTrigger().RequestAsync();
return;
}
}
var builder = new BackgroundTaskBuilder();
builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Background.BackgroundTask";
ApplicationTrigger _AppTrigger = new ApplicationTrigger();
builder.SetTrigger(_AppTrigger);
builder.Register();
await _AppTrigger.RequestAsync();
}
我的任务现在只是延迟并做一些其他事情,取消时释放它:
public void Run(IBackgroundTaskInstance taskInstance)
{
_deferral = taskInstance.GetDeferral();
taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);
AddWatched();
}
private void OnCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
{
_deferral.Complete();
}
但是当我尝试取消和注销任务时,它只是挂起。当我再次启动它时,它表现得很奇怪(我认为现在有两个实例,它们都试图同时做同样的事情)。
理想情况下,我希望能够终止后台任务而不是后台任务 - 或者如果这不起作用,如果任务被暂停,它应该被取消暂停而不是创建另一个任务并且旧任务被取消暂停.
如果您想取消,请在您应用的 ApplicationSettings 中设置一个布尔值 属性。 在您的后台任务中,在执行期间定期检查此 属性,如果设置,则取消该过程。