【问题标题】:Using Multiple Timers in C#在 C# 中使用多个计时器
【发布时间】:2020-03-26 10:57:33
【问题描述】:

我想在我的代码中使用多个计时器来处理不同时间间隔的 api 调用。我在多个计时器上发现了不同的意见。虽然我可以使用一个间隔更短的计时器,但为了清洁,我更喜欢多个计时器。

计时器用于定期调用 api 并检查交易所的市场价格/管理订单。

我担心两件事。 1. 在另一个定时器的 Eventhandler 期间发生定时器中断 2. 在 Eventhandler 代码完成运行之前发生定时器中断。

如果我在 Timer1 EventHandler 期间使用 Timer2.Stop() 会暂停或重置计时器吗?

任何帮助将不胜感激,谢谢!

private void Timer1_Tick(object sender, EventArgs e) {
 Timer2.Stop(); //
 Timer1.Stop(); //

 /// Process Timer1 Functions


 Timer2.Start(); // Does this reset the count?
 Timer1.Start(); // 
}

【问题讨论】:

  • 我相信有 3 个名为 Timer 的 .NET 类(在 WinForms、System.Timers 和 System.Threading 中)。你想做什么?您使用的是哪种计时器?你设置的代码是什么样的?
  • 你说的这会重置计数吗?是什么意思?重置什么?

标签: c# timer


【解决方案1】:

不要在单个计时器的滴答事件中引用第二个计时器。让每个定时器独立运作:

private void Timer1_Tick(object sender, EventArgs e)
{
    // Perform first API call
}

private void Timer2_Tick(object sender, EventArgs e)
{
    // Perform second API call
}

也不必费心尝试停止和启动计时器。除非这些计时器需要以高度同步的方式或非常严格的时间公差来做事。

【讨论】:

  • 那么如果在 Timer1 运行时发生 timer2 会发生什么?
  • 没什么大不了的。计时器彼此独立运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多