Tôi muốn sử dụng .NET iterator với các nhiệm vụ song song/đang chờ ?. Một cái gì đó như thế này:Cách lấy từ các tác vụ song song trong .NET 4.5
IEnumerable<TDst> Foo<TSrc, TDest>(IEnumerable<TSrc> source)
{
Parallel.ForEach(
source,
s=>
{
// Ordering is NOT important
// items can be yielded as soon as they are done
yield return ExecuteOrDownloadSomething(s);
}
}
Thật không may .NET không thể xử lý điều này. Câu trả lời hay nhất cho đến nay bởi @svick - sử dụng AsParallel().
THƯỞNG: Bất kỳ mã async/await đơn giản nào triển khai nhiều nhà xuất bản và một người đăng ký duy nhất? Người đăng ký sẽ kiếm được và các quán rượu sẽ xử lý. (chỉ dành cho các thư viện chính)
Cảm ơn, nhưng bạn có thể cho một ví dụ về cách này có thể được giải quyết với async/await? Cám ơn! – Yurik
@Yurik Bạn có thể giải thích tại sao bạn muốn điều đó không? – svick
Chủ yếu là vì tôi cảm thấy nó sẽ giúp tôi hiểu cú pháp chờ đợi mới cho một vấn đề không phải là "không đồng bộ 101", mà là một kịch bản thế giới thực. – Yurik