我正在使用任务并行库Parallel.ForEach()
来执行一些后台任务。我遇到了 Phil Haack 的 WebBackGrounder 应用程序。我想实现它,但只支持DoWork
方法而不支持动作。关于如何在上下文中使用它的任何想法都将非常有用。否则我应该编写自己的类来处理这些操作。JobHost
Threading.Task
Parallel.ForEach
我的并行每种方法如下:
IList<object> tasks = FetchActiveTasks();
OrderablePartitioner<Tuple<int, int>> chunkPart = Partitioner.Create(0, tasks.Count(), NoOfPartitions);
Parallel.ForEach(chunkPart, chunkRange =>
{
for (int i = chunkRange.Item1; i < chunkRange.Item2; i++)
{
try
{
if (!state.IsExceptional)
{
PerformTask(tasks[i]); // Method that carries out actual work.
}
}
catch (Exception e)
{
exceptions.Enqueue(e);
}
}
});