c# - C# windows 服务 - 每秒调用方法的最佳方式(不带 Windows.Forms.Timer)
问题描述
我想每秒调用一个方法。通常,该方法将在几毫秒后完成。但有时可能需要 2 到 3 秒。在不使用 Windows.Forms.Timer(单线程)的情况下处理此问题的最佳方法是什么。我现在的解决方案是使用 System.Timers.Timer 并设置 _timer.AutoReset = false 并且在我的“计时器经过方法”完成后,我使用 _timer.Start() 重新启动计时器
有没有更好的方法来做到这一点?
谢谢你。
解决方案
计时器以给定的时间间隔执行。这是.net 框架中使用的计时器的定义。如果您想要不同的行为,也许计时器不是您想要的。如果我正确理解您的问题,您希望将方法调用间隔 1 秒。
实现此目的的一种方法是使用异步任务。
//in your start method
Task.Run(() => YourRepeatingTask(CancellationToken.None));
private async Task YourRepeatingTask(CancellationToken token)
{
while (true) //check for conditions here
{
//Do stuff here
await Task.Delay(TimeSpan.FromSeconds(1), token);
}
}
推荐阅读
- excel - 在 Excel 中为字符串生成正则表达式
- xcode - 如何对属性 Core Data Swift 5 中的值求和
- visual-studio-code - VS Code - 增加 5000 次分阶段 Git 更改的限制
- apache - XAMPP .htaccess AddEncoding br brotli
- python - 制作散点图时的问题
- c# - 将 C# 类导出为具有不同名称的 COM 类
- laravel - Laravel - 试图获取非对象的属性'employee_code'
- jwt - 在 SignalR 与 Blazor-WASM 连接期间使用 JWT
- python - 挑战:使用 python 提取曲线文本
- javascript - 我需要在具有特定条件的数组中找到重复的行