我有一个如下的循环
for(int i = 0; i < 10; i++)
{
// some long time processing
}
我想创建一个计时器,它会检查一个处理是否运行超过5分钟。如果一个处理运行超过5分钟,它将停止当前处理然后开始另一个处理。
是否可以制作另一个线程来监控主循环?
我的程序是一个控制台应用程序。
答案 0 :(得分:3)
查看ManualResetEvent,特别是WaitOne方法。
答案 1 :(得分:2)
除了Jamie的asnwer,你可以使用System.Threading.Timer,它将在后台线程中执行。
答案 2 :(得分:1)
你应该使用System.Timers.Timer
答案 3 :(得分:0)
但是,您仍然无法中止正在运行的代码。 代码自身必须提供一种取消自身的能力,计时器可以在一定时间后调用它。
您可以使用布尔值“shouldCancel”,例如您在循环的每次迭代中检查(或甚至多次)。
“糟糕”的方式是使用Thread.Abort - 但是,这不是很好的风格。