Lu1*_*zZz 1 .net c# task task-parallel-library
我一直试图这样做:
创建'N'任务以执行并持续运行此数量的一段时间,在这种情况下,一个任务完成,然后我应该开始一个新任务以保持相同数量的任务.
我不知道是否可以使用TaskScheduler处理这个问题,或者我必须创建一个自定义的TaskScheduler.
我认为可以使用的另一个选项是,当任务完成时使用TPL DataFlow Producer-Consumer,然后taskcheduler接受生产者生成的新任务.
问题是:当一个任务完成以保持相同数量的任务时,如何创建新任务?
此代码将继续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)