C#Win8.1通用应用程序后台任务:使用CancelOnConditionLoss应用程序
我正在构建一个带有后台任务的通用应用程序。注册任务时,我正在应用系统条件,条件丢失时取消设置为true:C#Win8.1通用应用程序后台任务:使用CancelOnConditionLoss应用程序,c#,win-universal-app,C#,Win Universal App,我正在构建一个带有后台任务的通用应用程序。注册任务时,我正在应用系统条件,条件丢失时取消设置为true: builder.AddCondition(new SystemCondition(SystemConditionType.UserNotPresent)); builder.CancelOnConditionLoss = true; 这是可行的,但问题是当条件丢失触发时,应用程序崩溃。如果我在条件丢失时不使用“取消”,即使“用户在场”,任务仍将继续运行。如果您在这个问题上有任何帮助或建议,
builder.AddCondition(new SystemCondition(SystemConditionType.UserNotPresent));
builder.CancelOnConditionLoss = true;
这是可行的,但问题是当条件丢失触发时,应用程序崩溃。如果我在条件丢失时不使用“取消”,即使“用户在场”,任务仍将继续运行。如果您在这个问题上有任何帮助或建议,我们将不胜感激
以下是后台任务运行方法:
async public void Run(IBackgroundTaskInstance taskInstance)
{
Debug.WriteLine(taskInstance.Task.Name + " task is running.......");
//Get a deferral if we're doing async work.
BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
try
{
taskInstance.Canceled += (s, e) =>
{
cancelRequest = true;
s.Task.Unregister(true);
Debug.WriteLine(s.Task.Name + " task has been cancelled.");
};
while (cancelRequest == false)
{
Debug.WriteLine("inside loop");
await Task.Delay(15000);
}
}
catch (Exception ex)
{
Debug.WriteLine("An Error Has Occurred: " + ex.Message);
}
deferral.Complete();
}
更新:
经过进一步调查,注意到在输出控制台中,应用程序抛出了以下错误:WWAHost.exe已退出,代码为1(0x1)其中是deletral.Complete()?它在try/catch之后,只是一个复制粘贴错误:)