1

私はという名前のタイマーを持っていSendTimerます、間隔は30秒です。

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

      TransferMoney();

      System.Threading.Thread.Sleep(15000);

      GenerateTransactions();

      SendTimer.Enabled = true;
}

ティックイベントが同時に1つのスレッドによって正しく呼び出されることを期待していました。同時に2つのスレッドではありません。しかし、ログで見たように、別のスレッドが動作しているときにスレッドによって呼び出されたようです。何か案が?それぞれ無効と有効にしているからです。

4

1 に答える 1

3

Windowsフォームタイマーは、定義上、シングルスレッドです。マルチスレッドはWM_TIMERメッセージを介して経過し、現在のGUIスレッドメッセージキューに送信される ため、マルチスレッドについては何もありません。

したがって、この:

同時に2つのスレッドではありません

複数のスレッドがある場合でも、WinFormsタイマーはこれとは何の関係もないためです。

于 2012-10-08T07:41:28.380 に答える