- Task
List<Task> tasks = new List<Task>();
for (int iCol = 1; iCol <= iColCount; iCol++)
{
tasks.Add(Task.Factory.StartNew(() =>
{
}));
if (tasks.Count == 15)
{
Task.WaitAny(tasks.ToArray());
tasks = tasks.Where(m => m.Status !=TaskStatus.RanToCompletion).ToList();
}
}
Task.WaitAll(tasks.ToArray());
2.Parallel
foreach
Parallel.ForEach(列表, new ParallelOptions() { MaxDegreeOfParallelism = 最大并发数 }, 成员 => { });
for
List<int> vs = new List<int>() { 1,2,3,4,5,6};
Parallel.For(0, vs.Count, new ParallelOptions() { MaxDegreeOfParallelism = 4 }, i =>
{
Console.WriteLine(i);
});
显式调用
使用线程安全队列ConcurrentQueue
ConcurrentQueue<Bookmark> queues = new ConcurrentQueue<Bookmark>();
List<Bookmark> lisBks = document.Bookmarks.Cast<Bookmark>().ToList();
lisBks.ForEach(bookmark => queues.Enqueue(bookmark));
Parallel.For(0, queues.Count(), (i) =>
{
});