继续运行特定数量的任务

时间:2014-01-10 19:31:24

标签: c# .net task-parallel-library task

我一直在尝试这样做:

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

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

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

问题是:如果完成任务以保持相同数量的任务,我该如何创建新任务?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

任务计划程序可用于运行可用于执行一组工作/任务的可执行文件。或者,您可以简单地创建一个Windows服务...