- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
最近,伦敦 NDC 的 Jon Skeet 谈到了 C# 5 async/await,并提出了“按完成排序”异步任务列表的想法。一个链接http://msmvps.com/blogs/jon_skeet/archive/2012/01/16/eduasync-part-19-ordering-by-completion-ahead-of-time.aspx
我有点困惑或者我应该说我不确定这种技术什么时候更适合使用。
我不明白这个和下面的例子之间的区别
var bag = new ConcurrentBag<object>();
Parallel.ForEach(myCollection, async item =>
{
// some pre stuff
var response = await GetData(item);
bag.Add(response);
// some post stuff
}
或 ForEachAsync 由 Stephen Toub 解释 - http://blogs.msdn.com/b/pfxteam/archive/2012/03/05/10278165.aspx
EDIT: Found a blog post from Stephen Toub explaining "Ordering by completion" <=> "Processing tasks as they complete". Worth reading. After reading this I could clearly understand the reasons how it works and also when to use this technique.
最佳答案
不要使用Parallel.ForEach
来执行async
代码。 Parallel.ForEach
不理解 async
,因此您的 lambda 将变成 async void
,这将无法正常工作( Parallel.ForEach
将在所有工作完成之前返回;异常将无法正确处理;可能还有其他问题)。
当您有一组对象(不是Task
)时,您想要执行一些async
对它们中的每一个进行操作,并且这些操作应该并行执行。
当你有一个 Task
的集合时,使用 OrderByCompletion()
,你想对每个 的结果执行一些操作(异步或非异步) >Task
,操作应该不并行执行,并且您希望根据Task
完成的顺序执行操作。
关于c# - 何时将 OrderByCompletion (Jon Skeet) 与 Parallel.ForEach 与异步委托(delegate)一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478114/
以下代码摘自 Jon Resig 的书 Secrets of JavaScript Ninja解释如何使用闭包来实现函数的部分应用。但是,我在理解变量 arg 的意图时遇到了问题。为什么需要它以及它如
我认为我对快速排序的工作原理有很好的理解,直到我在 http://code.google.com/edu/algorithms/index.html 上观看了视频。其中 Jon Bentley 介绍了
为了简单的模块间通信,有经典的 .NET 事件,但现在太多了,并且存在通过模块相互调用的事件链。 比如 Event_A 触发 Event_B 触发 Event_C。 EventAggregator 对
我通读了乔恩·斯凯特(Jon Skeet)关于beforefieldinit的article的信息,偶然发现了一个问题。他提到,可以在调用静态字段的第一个引用之前的任何时间调用类型初始值设定项。 这是
作为一个相对新手,我尝试尽可能多地阅读有关特定主题的内容,并尽可能多地测试/编写代码。我在看 Jons Brainteasers 之一(问题 #2)我的输出与答案不同。这让我来到这里询问最近版本是否发
Jon's Brain Teasers 这里是剧透...... 我正在查看 answer到#1,我必须承认我从来不知道过载决议是这种情况。但为什么是是这样呢。在我看来,Derived.Foo(int)
Jon Skeet 有以下 reputation tracker这是由 C# 构建的。 我有兴趣通过 Python 构建一个类似的应用程序,至少使用以下模块 漂亮的汤 默认字典 我们显然需要 解析站点
我阅读了 Skeet 的书的第 2.3.2 节,据我所知,C# 中没有像 C++ 中那样的真正引用。 It's interesting to note that not only is the "by
我正在研究 Jon Skeet 的 Edulinq,我看到了以下代码,第 23 页,他在其中为 Linq 的 Empty() 运算符实现了缓存机制 private static class Empty
public sealed class Singleton { Singleton() {} public static Singleton Instance {
假设我有用户、团队和运动员文档。用户文档有一组与团队 ID 相关的对象。将 key 与用户字段匹配后,我需要在单个查询中从团队获取相关数据。 我有类似下面的东西 "size": 20, "query"
我正在经历这个出色的article Jon Skeet 的 Java 引用语义,他指出 We assume the presence of a procedure named f that takes
/*** Simple jQuery Slideshow Script Released by Jon Raasch (jonraasch.com) under FreeBSD lic
我一直在努力理解 internal 关键字以及何时需要使用它。幸运的是,今天,当我在阅读 Jon Skeet 的书 C# In Depth, 3rd Edition 关于如何实现迭代器时,在第 161
我刚刚看过 Jon Skeet 的视频类(class),他在视频类(class)中谈到单元测试异步方法。它在付费网站上,但我在他的 book 中发现了与他所说的类似的内容。 (只需 Ctrl+F “1
我的代码中需要一个单例。我读了 Jon Skeet 的 page在单例上并根据他的推荐选择了这个模型(#4): public sealed class Singleton { private
在乔恩的 site 上他在 C# 中设计了一个非常优雅的单例,如下所示: public sealed class Singleton { Singleton() { }
我知道the long history of ffmpeg and libav .就个人而言,我更喜欢使用 Jon Severinsson 的 PPA,如 suggested in many answ
有人熟悉 Jon Leighton 的 jquery.date_input.pack 插件吗?我正在尝试将日期格式设置为 yyyymmdd 但我能够做到正确。任何帮助将不胜感激。 这是我尝试使用的代码
我看到了使用 typings.json 的 angular 2 示例: { "globalDependencies": { "core-js": "registry:dt/core-js#
我是一名优秀的程序员,十分优秀!