Ich versuche, meinen Kopf herum zu wickeln async
/await
und wollte wissen, ob dies die richtige Verwendung des Task.WhenAll
Methode ist:Der richtige Einsatz von Task.WhenAll
public class AsyncLib
{
public async Task<IEnumerable<string>> DoIt()
{
var urls = new string[] { "http://www.msn.com", "http://www.google.com" };
var tasks = urls.Select(x => this.GetUrlContents(x));
var results = await Task.WhenAll(tasks);
return results.Select(x => x);
}
public async Task<string> GetUrlContents(string url)
{
using (var client = new WebClient())
{
return await client.DownloadStringTaskAsync(url);
}
}
}
Haupt
Diese ist die Anrufkonsolenanwendung.
class Program
{
static void Main(string[] args)
{
var lib = new AsyncLib();
foreach(var item in lib.DoIt().Result)
{
Console.WriteLine(item.Length);
}
Console.Read();
}
}
Definieren Sie "richtig" ..? –
@SimonWithehead - Ich bin neu in Async/erwarten, also versuche nur, meinen Kopf darum herum zu wickeln. Korrekt würde ich sagen, "Gibt es einen besseren Weg?" – Sam
Dies ist im Allgemeinen, wie ich es gesehen habe/gesehen habe. Sie müssen auf eine Reihe von Aufgaben warten, um asynchron abzuschließen. 'WhenAll 'ist im Allgemeinen wie Sie es tun (das ich weiß). –