指定された時間の後にイベントを発生させるクラスがあります (System.Timers.Timer
内部を使用します)。私のテストコードではStopwatch
、クラスが作成される前に開始した を作成し、イベントのコールバックを設定してそれを停止しましたStopwatch
。その後、までブロックNot Stopwatch.IsRunning
しました。シンプルですね。
私の元のブロックコードは
While Stopwatch.IsRunning
End While
しかし、そのような空の while ループがあると、コールバックが起動しないことがわかりました。デバッグ コードを while ループに入れるとすぐに、動作しました!:
Dim lastSecond As Integer = 0
While sw.IsRunning
If (Date.Now.Second > lastSecond) Then
lastSecond = Date.Now.Second
Console.WriteLine("blocking...")
End If
End While
この奇妙な動作の原因は何ですか? さらに重要なことに、ブロック セクションに挿入してイベントを発生させることができる最も単純なコードは何ですか?