小编agf*_*gfc的帖子

使用方法内的"ToListAsync()"返回IEnumerable

目前我正在使用其他人的代码.这不是我第一次看到这样的事情:

public async MyMethod Task<IEnumerable<MyResult>> FindResults()
{
// some code here
var ret = await repository.BusinessObjects.ToListAsync()

return ret;

}
Run Code Online (Sandbox Code Playgroud)

我的问题是:在MyMethod返回类型中使用IEnumerable是不是适得其反,因为结果已经枚举,并且最好保持这种方式?使用List不是更好吗?

(我想它也适用于非异步操作,但我决定以我在代码中看到的方式显示这个以防万一)

.net c#

6
推荐指数
1
解决办法
5286
查看次数

是Parallel.ForEach已经过时了.过时了?

美好的一天,

可以通过多种方式实现并行执行.从严格的手动"多线程"到使用Microsoft创建的各种"帮助者".其中一个帮手是Parallel类.

我的一位同事坚持认为Parallel.ForEach(或整体的Parallel类)是"旧的",不应该使用.相反,他说,应该使用异步操作.换句话说,你应该使用Task.WhenAll()而不是Parallel.ForEach().

当被问及为什么不使用Parallel.ForEach(),时,这正是所需要的 - 并行执行多个昂贵的操作,他回答说这Parallel.ForEach()是旧的,并且Microsoft建议尽可能使用async/await.

我搜遍了MSDN和Stackoverflow以及我能找到的所有地方,但我找不到任何指向使用async/await而不是.Parallel的必要性.虽然通常可以通过交换这些工具来获得类似的结果,但这并不意味着Parallel.ForEach已经过时了.或者是吗?

任何人都有一个信誉良好的机构(MSDN?)的一些"最佳实践"或"建议"的链接,可以说这Parallel.ForEach()是逐步淘汰的,而且需要坚持创建,运行和等待任务?

请不要发布与Parallel VS Async相关的答案,因为这不是问题.

问题是:既然你可以使用async/await WhenAll(WaitAll等)使任务并行运行,那么在.NET 4.5以后它是否会使'Parallel'类过时,旧或不流行?

parallel-processing multithreading design-patterns async-await .net-4.5

5
推荐指数
1
解决办法
282
查看次数