我有以下设想:
C#应用程序(.net 4.0/4.5),有5-6个不同的线程。每个线程都有不同的任务,每x秒启动一次(从5到300不等)。
每项任务都有以下步骤:
由于这些任务可能在某个时候(互联网问题、超时等)失败,那么在.NET世界中,什么是最好的解决方案?
我考虑了以下解决方案:
哪个会更安全更健壮?应用程序将在无人值守的系统上运行,因此它应该能够保持在执行中,而不考虑任何可能的异常。
发布于 2014-03-26 15:11:22
创建线程非常昂贵。第一个选择不是很好。如果“做事情”的周期很短(暂停之间),您可以考虑使用ThreadPool或TPL。如果线程大部分都很忙,或者工作需要相当长的时间,那么专用的工作人员就更合适了。
至于例外情况:不要让异常逃避工作人员。你必须抓住他们。如果这意味着你在几秒钟内放弃,然后再试一次,那就很好了。
发布于 2014-03-26 17:05:22
您可以使用生产者消费者模式方法对整个过程进行建模。您有一个生产者,它将新的任务描述放入队列中,并且可以有多个从队列中处理的使用者(4个或5个线程)。使用者或处理线程的数目可能因负载、队列长度而异。
每个任务包括从DB读取、转换格式、发送到web服务器,然后处理来自web服务器的响应。我想每个任务都会完成所有这些步骤。
如果队列中的项出现异常,则可能会将队列项标记为“失败”,并将其安排为稍后重试。
https://stackoverflow.com/questions/22665181
复制相似问题