当我创建一个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
事件在触发时显示了不同的线程。尽管当我将值更改为Interval
更高的值,例如 2000(而不是 1000)时,它似乎保持在同一个线程上。
这是为什么?
我想要一个在它自己的线程上触发但只在一个线程而不是多个线程上触发的计时器。