继续运行特定数量的任务

Lu1*_*zZz 1 .net c# task task-parallel-library

我一直试图这样做:

创建'N'任务以执行并持续运行此数量的一段时间,在这种情况下,一个任务完成,然后我应该开始一个新任务以保持相同数量的任务.

我不知道是否可以使用TaskScheduler处理这个问题,或者我必须创建一个自定义的TaskScheduler.

我认为可以使用的另一个选项是,当任务完成时使用TPL DataFlow Producer-Consumer,然后taskcheduler接受生产者生成的新任务.

问题是:当一个任务完成以保持相同数量的任务时,如何创建新任务?

L.B*_*L.B 8

此代码将继续numTasks并行运行任务.

int numTasks = 5;
SemaphoreSlim semaphore = new SemaphoreSlim(numTasks);
while(true)
{
    semaphore.Wait();
    Task.Run(() =>
        {
            DoSomething();
        })
        .ContinueWith(_ => semaphore.Release());
}
Run Code Online (Sandbox Code Playgroud)