2011-01-14 59 views
2

我有一个windows服务,每隔几分钟就会异步执行一个作业,有时候windows服务执行并且以前的作业还没有完成,使用线程是否有办法排队新作业一个没有完成,以便它在第一份工作完成时开始运行?c#中线程的排队执行#

+1

听起来像你必须小心,如果他们排队的速度比他们能够完成的更快,那么就不会有无限增长的积压任务。确保在队列中存在最大数量的队列(例如,只有一个!),或者采取简单的方法,并且如果存在旧队列,则阻止新队列的开始。 – 2011-01-14 16:06:05

回答

5

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

这很容易在.NET 4中使用BlockingCollection<T>;在此之前它是一个更复杂,但不是不好。

+0

不幸的是,我使用3.5是否有链接到3.5中的示例?谢谢 – ryudice 2011-01-14 15:56:30

0

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