我正在寻找一种设计模式,以异步方式执行在表中排队的作业列表,并更新数据库中的作业状态(已完成/失败/已取消)。最好是我应该能够根据用户需求杀死一份工作,以防工作需要更多时间来执行,或者如果用户错误地开始工作。这些工作中的每一个都需要一段时间来执行。
我可以使用Windows服务监视表中的任何新作业,然后使用多线程异步执行它们。但是多线程很复杂且容易出错。为此目的,使用WCF服务是否会有所帮助?例如,我可以使用WCF服务来执行作业并异步调用它,然后订阅其已完成的事件以更新作业状态,而不是多线程吗?哪个选项更好还是不重要?正如我所说,如果需要,我也需要能够取消这份工作。
答案 0 :(得分:0)
查看Task Parallel Library。它可以为您提供所需的一切,只需要真正的复杂性,您需要将工作提供给工厂,可以这么说。
抱歉这么短的答案,没有例子,我都在手机上试图吃东西。
答案 1 :(得分:0)
设计模式为Producer Consumer Queue。
如果要将队列实现为数据结构,则需要使用线程安全队列。
如果您使用数据库表来实现队列,那么使用DBMS的原子性来确保只有一个消费者从队列中抓取特定项目。