1

我有一个名为 的计时器SendTimer,间隔为 30 秒。

protected void SendTimer_Tick(object sender, eventArgs e)
{
      SendTimer.Enabled = false;

      TransferMoney();

      System.Threading.Thread.Sleep(15000);

      GenerateTransactions();

      SendTimer.Enabled = true;
}

我希望一个线程同时正确调用滴答事件。不是同时通过 2 个线程。但正如我在我的日志中看到的,它似乎是由一个线程调用的,而另一个线程正在运行。任何的想法?因为我分别禁用和启用它。

4

1 回答 1

3

Windows Forms Timer根据定义是单线程的。它与多线程无关,因为它通过WM_TIMER消息流逝,被发送到当前 GUI 线程消息队列。

所以这:

不是同时通过 2 个线程

是不正确的,因为即使你有多个线程,WinForms Timer 也与此无关。

于 2012-10-08T07:41:28.380 回答