在c#中排队执行线程

时间:2011-01-14 15:51:11

标签: c# .net multithreading

我有一个Windows服务,它每隔几分钟异步执行一次作业,有时候Windows服务会执行而前一个作业还没有完成,使用线程是否有一种方法可以将新作业排队,如果前一个作业没有完成,那么它第一份工作完成后开始运行?

2 个答案:

答案 0 :(得分:5)

您可以创建自己的生产者/消费者作业队列 - 实际上是单线程线程池。

使用BlockingCollection<T>在.NET 4中很容易做到这一点;在此之前它是一个技巧,但不好。

答案 1 :(得分:0)

您必须在主控制服务中实现队列。 在完成线程和/或periodicaly时,您可以检查队列并开始下一个任务。