Cosa fare se è necessario eseguire più attività di I/O asincrone in parallelo, ma è necessario assicurarsi che non siano in esecuzione più di X processi I/O contemporaneamente; e le attività di elaborazione degli I/O pre e post non dovrebbero avere tale limitazione.Come eseguire correttamente più attività asincrone in parallelo?
Ecco uno scenario: diciamo che ci sono 1000 attività; ognuno di essi accetta una stringa di testo come parametro di input; trasforma quel testo (elaborazione pre I/O) quindi scrive il testo trasformato in un file. L'obiettivo è di fare in modo che la logica di pre-elaborazione utilizzi il 100% di CPU/core e parte I/O delle attività eseguite con un massimo di 10 gradi di parallelismo (massimo 10 simultaneamente aperto per scrivere file alla volta).
È possibile fornire un codice di esempio su come farlo con C#/.NET 4.5?
http://blogs.msdn.com/b/csharpfaq/archive/2012/01/23/using-async-for-file-access-alan-berman.aspx
Rx 2.0 potrebbe essere una buona misura per questo (strozzamento seconda fase a 10 alla volta), ma non sono abbastanza familiare con esso per dire di sicuro. : -/ –