我的问题是,deferral.complete()
方法究竟是什么,这个方法调用事件task.Compledet
,还是有办法从我班BackgroundTaskSyncer
调用一个方法{ {1}} ????
当我运行Programm时,我将从BackgroundTaskSyncer执行Run方法,但在其他类中没有任何内容吗?
BackgroundSyncer
答案 0 :(得分:4)
创建延期以解决async void
事件和方法的问题。例如,如果在后台操作期间必须await
,则可以使用async void Run
方法。但问题是运行时不知道你实际上有更多的工作要做。
因此,延迟是一个可用于通知运行时的对象“我现在真的已经完成了”。只有在您需要await
时才需要推迟。
我有blog post that goes into "asynchronous event handlers" and deferrals in more detail。