C #: Exécuter une tâche simultanément

J’essaie d’exécuter plusieurs tâches en continu, sans interruption. Voici mon code:

int maxThread = 100; Task[] tasks = new Task[maxThreads]; while(true) { for(int i = 0;i<maxThreads;i++) { tasks[i] = new Task.Factory.StartNew(someTask); } Task.WaitAll(tasks); } 

Cette fonction attend donc que toutes les tâches soient terminées et exécute le prochain lot de tâches. Mais je voudrais commencer une tâche dès qu’elle est terminée, sans attendre les autres tâches.

Merci!

Je voudrais utiliser SemaphoreSlim

 int maxThread = 100; SemaphoreSlim sem = new SemaphoreSlim(maxThread); while (true) { sem.Wait(); Task.Factory.StartNew(someTask) .ContinueWith(t => sem.Release()); } 

Utilisation de Parallel.ForEach avec var po = new ParallelOptions(){MaxDegreeOfParallelism = 100}; peut être une autre alternative. Mais Parallel.ForEach ne garantit pas qu’il utilisera 100 tâches pour cela.

J’aimerais utiliser celui-ci. Attacher des tâches à son parent; C’est facile. Comme ça.

 Task t1 = new Task(()=>{ // put your children tasks here. Task.Factory.StartNew(()=>{}, TaskCreationOptions.AttachedToParent); }); t1.RunSynchronously(); // then start your next batch tasks.