gpt4 book ai didi

c# - 在后台工作程序中延迟代码执行的正确方法

转载 作者:行者123 更新时间:2023-11-30 15:30:39 24 4
gpt4 key购买 nike

好的,所以我一直在阅读 Thread.Sleep、Task.Delay、AutoResetEvent 等内容

我看到很多关于使用哪些参数的争论,因为这取决于正在执行的任务。

我目前在所有情况下都使用 Thread.Sleep,我认为我需要开始避免它并使用更好的做法。

这是一个包含 BackgroundWorker 的客户端应用程序。工作程序每 30 分钟运行一次,以检查来自 Web 服务的更新数据。

然后更新位于 MainWindow 中的 3 个 int 变量。这些对 UI 没有任何作用。它们仅用于检查正在运行的其他工作人员。

是否有一种方法比另一种更好?

如果用户退出应用程序并且我正在调用 Application.Current.Shutdown(),它会继续运行直到 Thread.Sleep 完成,还是即使线程正在休眠也会退出?

最佳答案

结合使用 Task、await 和 CancellationTokenSource 可以在后台运行,等待而不浪费线程,然后取消。

类似于:

var cancel = new CancellationTokenSource();
App.OnShutdown += (s,e) => cancel.Cancel();
await Task.Delay(1000,cancel.Token);

关于c# - 在后台工作程序中延迟代码执行的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21730101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com