Si necesito realizar operaciones de E/S en un bucle, puedo crear las Task y esperarlas todas. Algo como esto:
var tasks = new List<Task>(); for (var dataToProcess in listOfData) { tasks.Add(DoSomeIOAsync(dataToProcess)); } await Task.WhenAll(tasks); ¿Cómo puedo razonar sobre cuál es un número razonable de dataToProcess en listOfData ?
Si DoSomeIOAsync es asíncrono, el subproceso utilizado se devolverá mientras se espera el IO. Entonces, ¿no hay riesgo de inanición del grupo de subprocesos, supongo?
¿Es la sobrecarga de tener una gran cantidad de máquinas de estado de Task en la memoria lo que podría ser un problema?
¿Hay algunas pautas que pueda usar para razonar sobre esto?