使用C#异步作业执行和作业状态管理使用C#

问题描述:

我正在寻找一种设计模式来执行异步排列在表中的作业列表,并且还更新数据库中的作业状态(完成/失败/取消)。最好我应该能够根据用户的需求杀死一个工作,以防工作需要更多的时间来执行,或者用户错误地将工作踢​​掉了。这些工作中的每一个都需要一段时间来执行。使用C#异步作业执行和作业状态管理使用C#

我可以有一个Windows服务,监视表中的任何新的作业,然后使用多线程异步执行它们。但多线程复杂且容易出错。为了这个目的,使用WCF服务会有帮助吗?例如,而不是多线程,我可以有一个WCF服务来执行作业并异步调用,然后订阅其完成的事件来更新作业状态?哪个选项更好或者它并不重要?正如我所说,如果需要的话,我也需要能够取消这项工作。

+0

为什么需要并行执行它们而不是FIFO?如果你不需要它,这只会增加复杂性。 – 2011-12-14 15:01:42

调查Task Parallel Library。它看起来像是你需要的所有东西,只有真正的复杂性来自你需要将工作提供给工厂的地方,可以这么说。

道歉为这样一个简短的答案没有例子,我都在我的手机上,并试图吃。

设计模式是Producer Consumer Queue

如果您正在实现队列作为数据结构,那么您需要使用线程安全队列。

如果您使用数据库表来实现队列,那么使用DBMS的原子性来确保只有一个消费者从队列中抓取特定的项目。