0

タスク並列ライブラリを使用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);
        }                  
    }
});
4

0 に答える 0