मेरे पास उन कार्यों की एक सूची है जो मैंने इस तरह बनाई हैं:
public async Task<IList<Foo>> GetFoosAndDoSomethingAsync()
{
var foos = await GetFoosAsync();
var tasks = foos.Select(async foo => await DoSomethingAsync(foo)).ToList();
...
}
उपयोग करके .ToList()
, कार्य सभी शुरू होने चाहिए। अब मैं उनके पूरा होने का इंतजार करना चाहता हूं और नतीजे लौटाऊंगा।
यह उपरोक्त ...
ब्लॉक में काम करता है :
var list = new List<Foo>();
foreach (var task in tasks)
list.Add(await task);
return list;
यह वही करता है जो मैं चाहता हूं, लेकिन यह अनाड़ी लगता है। मैं बहुत कुछ इस तरह सरल लिखूंगा:
return tasks.Select(async task => await task).ToList();
... लेकिन यह संकलन नहीं है। मैं क्या खो रहा हूँ? या सिर्फ इस तरह से चीजों को व्यक्त करना संभव नहीं है?
DoSomethingAsync(foo)
प्रत्येक फू के लिए क्रमिक रूप से प्रक्रिया करने की आवश्यकता है , या क्या यह Parallel.ForEach <Foo> के लिए एक उम्मीदवार है ?