好的,所以我一直在阅读Thread.Sleep,Task.Delay,AutoResetEvent等等
我看到了很多关于使用哪些参数,因为它取决于正在执行的任务。
我目前在所有内容中使用Thread.Sleep并认为我需要开始避免它并使用更好的练习。
这是一个包含BackgroundWorker的客户端应用程序。该工作程序每30分钟运行一次,以检查来自Web服务的更新数据。
然后更新位于MainWindow的3个int变量。这些对UI没有任何作用。它们仅用于检查正在运行的其他工作人员。
是否有一种方法比其他方式更好地延迟?
如果用户退出应用程序并且我正在调用Application.Current.Shutdown(),它是否会继续运行直到Thread.Sleep完成,或者即使线程正在休眠也会退出?
答案 0 :(得分:4)
使用Task,await和CancellationTokenSource的组合,可以在后台运行,等待而不浪费线程,然后取消。
类似的东西:
var cancel = new CancellationTokenSource();
App.OnShutdown += (s,e) => cancel.Cancel();
await Task.Delay(1000,cancel.Token);