一尘不染

有一组仅一次运行X的任务

c#

假设我有100项任务需要花费10秒钟来完成。现在,我只想一次运行10个,例如这10个中的1个完成另一个任务,直到全部完成。

现在,我总是使用ThreadPool.QueueUserWorkItem()这种任务,但是我已经读到这样做是不好的做法,应该改用Tasks。

我的问题是,我在任何地方都找不到适合自己的案例的好例子,因此您可以让我开始如何通过Tasks实现此目标吗?


阅读 236

收藏
2020-05-19

共1个答案

一尘不染

SemaphoreSlim maxThread = new SemaphoreSlim(10);

for (int i = 0; i < 115; i++)
{
    maxThread.Wait();
    Task.Factory.StartNew(() =>
        {
            //Your Works
        }
        , TaskCreationOptions.LongRunning)
    .ContinueWith( (task) => maxThread.Release() );
}
2020-05-19