【发布时间】:2022-01-19 12:35:42
【问题描述】:
当我使用 winforms 应用程序时,我需要每 5 分钟检查一次数据更新。我需要向少数服务发送请求,然后获取响应并更新数据库中的数据。在另一个线程(或任务?)上进行的最佳实践是什么?程序不应减速。 我尝试用计时器制作: 程序运行时初始化定时器
public class Timer
{
private System.Timers.Timer timer;
private void InitTimer()
{
timer = new System.Timers.Timer(4000);
timer.Elapsed += ElapsedTime;
timer.Enabled = true;
}
private void ElapsedTime()
{
//send request and update data
}
}
【问题讨论】:
-
@TheodorZoulias 带有异步方法的计时器,对吧?
-
Timer事件可以重叠。恕我直言,使用PeriodicAsync之类的方法更安全。 -
当使用
System.Timers.Timer时,你不在UI线程上运行,这很好,但是你需要调用你想要更新的表单或控件,以便UI代码在 UI 线程上运行。
标签: c# multithreading winforms async-await