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?
答案 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();
}