Tag: 任务平行库

C#5.0的asynchronous等待function与TPL有什么不同?

我没有看到C#的(和VB的)新的asynchronousfunction和.NET 4.0的任务并行库之间的不同 。 以Eric Lippert的代码为例: async void ArchiveDocuments(List<Url> urls) { Task archive = null; for(int i = 0; i < urls.Count; ++i) { var document = await FetchAsync(urls[i]); if (archive != null) await archive; archive = ArchiveAsync(document); } } 看起来await关键字有两个不同的用途。 第一次出现( FetchAsync )似乎意味着: “如果此值稍后在方法中使用,且其任务未完成,请等到它完成后再继续。 第二个例子( archive )似乎意味着: “如果这个任务尚未完成,请立即等待,直到完成。” 如果我错了,请纠正我。 难道不能像这样轻松地写出来吗? void ArchiveDocuments(List<Url> urls) { for(int […]