BackgroundTaskCompletedEventArgs.CheckResult
的文档说:
如果后台任务已完成事件报告错误,则抛出异常。
我尝试过后台任务在其Run
方法中抛出异常,但是当我订阅它的Completed
事件并在完成时调用CheckResult
时,没有例外是抛出。
CheckResult
什么时候实际抛出异常?
答案 0 :(得分:1)
它应该完全按照您的描述工作:如果在IBackgroundTask
的{{1}}方法中抛出异常,则Run
方法在您调用它时会抛出异常。
确保您的后台任务实际运行且您的应用处于前台,否则BackgroundTaskCompletedArguments.CheckResult()
事件根本不会被提升。
如果您想在工作中尝试一下,请下载Background task sample并对其进行两处修改:
IBackgroundTaskRegistration.Completed
方法的最后Task\ServicingComplete.cs
添加throw new Exception();
。Run
方法的开头BackgroundTask\ServicingCompleteTask.xaml.cs
添加args.CheckResult();
。如果您现在运行应用程序,请从UI注册任务并在应用程序位于前台时从Visual Studio的OnCompleted
工具栏触发该任务,您会注意到Debug Location
调用将引发异常如预期的那样。