首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何管理多线程c#应用程序

如何管理多线程c#应用程序
EN

Stack Overflow用户
提问于 2014-03-26 15:09:29
回答 2查看 139关注 0票数 0

我有以下设想:

C#应用程序(.net 4.0/4.5),有5-6个不同的线程。每个线程都有不同的任务,每x秒启动一次(从5到300不等)。

每项任务都有以下步骤:

  1. 从Server获取项
  2. 转换Json中的项目
  3. 将数据发送到Send服务器
  4. 等待服务器的回复。

由于这些任务可能在某个时候(互联网问题、超时等)失败,那么在.NET世界中,什么是最好的解决方案?

我考虑了以下解决方案:

  • 每x秒生成一个新线程(如果在执行中没有另一个此类线程)
  • 每x秒为每种类型的任务生成一个线程并执行循环步骤(以了解管理异常的方法)

哪个会更安全更健壮?应用程序将在无人值守的系统上运行,因此它应该能够保持在执行中,而不考虑任何可能的异常。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-26 15:11:22

创建线程非常昂贵。第一个选择不是很好。如果“做事情”的周期很短(暂停之间),您可以考虑使用ThreadPool或TPL。如果线程大部分都很忙,或者工作需要相当长的时间,那么专用的工作人员就更合适了。

至于例外情况:不要让异常逃避工作人员。你必须抓住他们。如果这意味着你在几秒钟内放弃,然后再试一次,那就很好了。

票数 0
EN

Stack Overflow用户

发布于 2014-03-26 17:05:22

您可以使用生产者消费者模式方法对整个过程进行建模。您有一个生产者,它将新的任务描述放入队列中,并且可以有多个从队列中处理的使用者(4个或5个线程)。使用者或处理线程的数目可能因负载、队列长度而异。

每个任务包括从DB读取、转换格式、发送到web服务器,然后处理来自web服务器的响应。我想每个任务都会完成所有这些步骤。

如果队列中的项出现异常,则可能会将队列项标记为“失败”,并将其安排为稍后重试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22665181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档