Wie kann die Anzahl der gleichzeitigen asynchronen E / A-Vorgänge begrenzt werden?

// let's say there is a list of 1000+ URLs
string[] urls = { "http://google.com", "http://yahoo.com", ... };

// now let's send HTTP requests to each of these URLs in parallel
urls.AsParallel().ForAll(async (url) => {
    var client = new HttpClient();
    var html = await client.GetStringAsync(url);
});

Hier ist das Problem, es startet mehr als 1000 gleichzeitige Web-Anfragen. Gibt es eine einfache Möglichkeit, die gleichzeitige Anzahl dieser asynchronen http-Anforderungen zu begrenzen? Damit nicht mehr als 20 Webseiten gleichzeitig heruntergeladen werden. Wie geht das am effizientesten?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage