我有一个像下面如何在单独的线程中运行计时器?
for(int i = 0; i < 10; i++)
{
// some long time processing
}
我想创建一个计时器,它会检查,如果一个处理运行超过5分钟一个循环。如果一次处理运行超过5分钟,则会停止当前处理,然后开始另一次处理。
是否有可能使另一个线程来监视主循环?
我的程序是一个控制台应用程序。
我有一个像下面如何在单独的线程中运行计时器?
for(int i = 0; i < 10; i++)
{
// some long time processing
}
我想创建一个计时器,它会检查,如果一个处理运行超过5分钟一个循环。如果一次处理运行超过5分钟,则会停止当前处理,然后开始另一次处理。
是否有可能使另一个线程来监视主循环?
我的程序是一个控制台应用程序。
你应该使用System.Timers.Timer
看看ManualResetEvent,特别是WaitOne方法。
除了杰米的asnwer可以使用System.Threading.Timer,这将在后台线程中执行。
但是,您仍然无法中止正在运行的代码。 代码iteself必须提供取消自己的能力,定时器可以在特定时间后调用它。
你可以使用一个布尔值“shouldCancel”,例如你在循环的每次迭代中(或者甚至多次)检查。
“坏”的方式将使用Thread.Abort - 但是,这不是很好的风格。
其实这是'System.Timers.Timer' – 2009-12-15 13:03:13
什么是System.Timers.timer和System.Threading.Timer – 2009-12-15 13:03:40
@Alex,固定(15chars) – Fredou 2009-12-15 13:04:19