首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#异步/等待。打电话忘记,别等了。长期运行过程

C#异步/等待。打电话忘记,别等了。长期运行过程
EN

Stack Overflow用户
提问于 2016-10-07 18:51:39
回答 1查看 351关注 0票数 0

我试图利用新的(相对的) C#异步/等待任务特性。我通过了几个例子,我得到了优势的一般想法。这里有两个主题,如果有人与我/我们分享一些线索或代码,我将非常感激:

  1. 我经常在“进程”期间写入一些日志/跟踪信息(比如写到TXT文件日志,或者将一些状态转储到db,等等)。我觉得异步执行这些调用将是非常有效的(调用和忘记,不等待)。但我学到的是,每个异步任务都需要等待,才能真正实现异步。那么,调用相同方法的解决方案是什么(具有不同的参数值,比如消息.)几次在“主方法/函数”期间,不等待每一次调用为“等待”?
  2. 我有一个非常复杂的processA(),它在windows服务中的"main“类循环中调用,以处理"next doc”(数千次)(长时间运行的进程)。我想把这个processA()放到一个任务中,并使用4-8任务并行调用processA()。

任何线索、有用的链接或代码示例都将得到真正的感谢。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-10-07 19:48:16

我觉得异步执行这些调用将是非常有效的(调用和忘记,不等待)。

火灾和遗忘的问题是,你不知道操作是否失败。对于大多数代码来说,这是不可接受的。

许多日志框架同步写入内存中的存储,然后定期刷新到磁盘/db。这在速度和日志可靠性之间提供了一个很好的权衡。

我想把这个processA()放到一个任务中,并使用4-8任务并行调用processA()。

听起来你把异步和并行处理混为一谈。如果您想使用并行处理,那么使用Parallel.ForEach或类似的东西;如果您想使用异步,那么第一步是使processA异步,然后对所有要完成的任务使用await Task.WhenAll

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

https://stackoverflow.com/questions/39924050

复制
相关文章

相似问题

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