If I pass the maxConcurrency as 10 will the code below limit the max parallel tasks to 10? How do I verify the number of tasks running at a time?
public BlockingCollection<Task> _workTaskQueue;
public void DequeueTask(int maxConcurrency)
{
var tasks = new List<Task>();
using (SemaphoreSlim concurrencySemaphore = new SemaphoreSlim(maxConcurrency))
{
foreach (var task in _workTaskQueue.GetConsumingEnumerable())
{
concurrencySemaphore.Wait();
if (!(task.IsCanceled) && task.Status == TaskStatus.Created)
{
task.ContinueWith((t) => { concurrencySemaphore.Release(); });
tasks.Add(task);
task.Start();
}
}
}
Task.WaitAll(tasks.ToArray());
}