¿Cómo limitar la cantidad de operaciones de E / S asíncronas concurrentes?

// 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);
});

Aquí está el problema, se inicia más de 1000 solicitudes web simultáneas. ¿Existe una manera fácil de limitar la cantidad concurrente de estas solicitudes http asíncronas? Para que no se descarguen más de 20 páginas web en un momento dado. ¿Cómo hacerlo de la manera más eficiente?

Respuestas a la pregunta(12)

Su respuesta a la pregunta