线程计时器与工作线程?

时间:2011-03-03 03:58:09

标签: .net multithreading timer

是否可以使用线程计时器在计时器事件上触发工作线程?

我想使用threading.Timer因为我打算使用由时间触发的Windows服务,但我看到的所有使用timer的示例代码都使用callback / threadpool。但在我的服务中,任务将超过几秒钟(最多一分钟)并涉及相当复杂的逻辑,而不仅仅是更新几个字段。我认为这样可以证明我选择的是workerthread而不是threadpool吗?

2 个答案:

答案 0 :(得分:0)

您可以使用回调和任务并行库来启动任务.... Task Parallelism

但是我相信this sample code正在做你想要的......我知道它使用了线程池......

  

“它在一个单独的线程池中执行   由...提供的线程   系统“。

......但为什么那么糟糕?

任务并行库基本上也做了类似的事情......

  

“在幕后,任务排队等候   一直到ThreadPool   增强算法(如   确定和   调整到的线程数   最大化吞吐量。 “

答案 1 :(得分:0)

我有类似的情况,我需要一组线程计时器。如果我的窗口服务已停止,我需要任何正在进行的计时器回调才能完成。

dispose your timer时可以使用WaitHandle,允许完成任何正在进行的回调:

var onWait = new ManualResetEvent(false);
timer.Dispose(onWait);
....
onWait.WaitOne(); 

Here is my related question我没有遇到任何问题..但是。我的回调做了一些繁重的处理,最多需要10-20分钟才能完成。