, , Task.Run . , , ThreadPool. , (, , ) .
- concurrency . TPL ActionBlock. (, MaxDegreeOfParallelism), :
block = new ActionBlock<MyItem>(item =>
{
using (var context = new MyDbContext())
{
context.MyItem.Add(item);
try {
context.SaveChanges();
}
catch {
}
}
}, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 2 });
while (queue.Any())
{
var item = queue.Dequeue();
block.Post(item);
}
block.Complete();
await block.Completion;