タスク並列ライブラリを使用Parallel.ForEach()
して、いくつかのバックグラウンド タスクを実行しています。Phil Haack の WebBackGrounder アプリケーションに出会いました。私はそれを実装したかったのですが、DoWork
メソッドはJobHost
サポートのみThreading.Task
でアクションはサポートしていません。コンテキストでそれを使用する方法についてのアイデアはParallel.ForEach
非常に役立ちます。または、アクションを処理する独自のクラスを作成する必要があります。
My Parallel 各メソッドは次のとおりです。
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);
}
}
});