在不同的线程中同时有更多的计时器

时间:2016-06-29 06:46:14

标签: c# .net timer

bool elapsed = false;

private void timerElapsed(object sender, System.Timers.ElapsedEventArgs e)                
{
   elapsed = true;
}

private void WorkerThreadFunction()
{
    Timer _timer = new System.Timers.Timer(60000);
    _timer.Elapsed += timerElapsed;
    _timer.AutoReset = false;

    while (!elapsed)
    {
         // Do something...
         Thread.Sleep(50);
    } 
}

全局变量"如何过去"反应?是否可以使用计时器运行更多单独的WorkerThreads?

1 个答案:

答案 0 :(得分:0)

当然可以运行更多单独的WorkerThreads。每个人都有自己的计时器。不应该有问题。

变量bool elapsed将由完成其作业的第一个Thread设置为true,并且在其他进程将其设置为false之前保持为真。如果你运气不好,某些线程甚至可能无法开始工作,因为第一个线程已将elapsed设置为true

编辑:

似乎您的线程作业已封装。 所以你实际上也可以只使用秒表,如果你不需要从线程中访问全局变量

private void WorkerThreadFunction()
{
    System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
    watch.Start();

    while(watch.ElapsedMilliseconds < 60000)
    {
         // Do something...
         Thread.Sleep(50);
    } 

    watch.Stop();
}