などを作成するSystem.Timers.Timer
と...
private System.Timers.Timer m_checker = new System.Timers.Timer();
public MyClass()
{
Debug.WriteLine("[threadid:" + Thread.CurrentThread.ManagedThreadId + "] Main Thread");
m_checker.Elapsed += m_checker_Elapsed;
m_checker.Interval = 1000;
m_checker.Start();
}
private void m_checker_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Debug.WriteLine("[threadid:" + Thread.CurrentThread.ManagedThreadId + "]");
}
間隔を 1000 に設定した結果:
/*
[threadid:10] Main Thread
[threadid:7]
[threadid:7]
[threadid:7]
[threadid:12]
[threadid:7]
[threadid:12]
etc...
*/
間隔を 2000 に設定した結果:
/*
[threadid:10] Main Thread
[threadid:7]
[threadid:7]
[threadid:7]
[threadid:7]
etc...
*/
Elapsed
イベントが発生しているときに、イベントが異なるスレッドを表示していることがわかります。値を(1000ではなく)2000などのより高い値に変更するInterval
と、同じスレッドにとどまるように見えます。
何故ですか?
独自のスレッドで起動するが、複数のスレッドではなく 1 つのスレッドで起動するタイマーが必要です。