如何在单独的线程中运行计时器?

时间:2009-12-15 12:56:11

标签: c# multithreading timer

我有一个如下的循环

for(int i = 0; i < 10; i++)
{
    // some long time processing
}

我想创建一个计时器,它会检查一个处理是否运行超过5分钟。如果一个处理运行超过5分钟,它将停止当前处理然后开始另一个处理。

是否可以制作另一个线程来监控主循环?

我的程序是一个控制台应用程序。

4 个答案:

答案 0 :(得分:3)

查看ManualResetEvent,特别是WaitOne方法。

答案 1 :(得分:2)

除了Jamie的asnwer,你可以使用System.Threading.Timer,它将在后台线程中执行。

答案 2 :(得分:1)

你应该使用System.Timers.Timer

答案 3 :(得分:0)

但是,您仍然无法中止正在运行的代码。 代码自身必须提供一种取消自身的能力,计时器可以在一定时间后调用它。

您可以使用布尔值“shouldCancel”,例如您在循环的每次迭代中检查(或甚至多次)。

“糟糕”的方式是使用Thread.Abort - 但是,这不是很好的风格。