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

本文关键字:计时器 线程 | 更新日期: 2023-09-27 17:52:51

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);
    } 
}

全局变量"elapsed"是如何反应的?是否有可能运行更多独立的带有计时器的workerthread ?

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

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

变量bool elapsed将被第一个完成任务的Thread设置为true,并且它将保持为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();
}