えムナウ Blog

えムナウ の なすがまま

目次

Blog 利用状況

ニュース


follow mnow at http://twitter.com


えムナウのプログラミングのページ

INETAJ

書庫

日記カテゴリ

ギャラリ

2009年6月15日 #

Vs2010 Parallelの中断

Task Parallel Library (TPL) で Parallel を中断するには3つの方法があります。

1つ目は Exception を throw すること、 2つ目は ParallelLoopState クラスの Break メソッドを実行しそれ以上のインデックスが必要ないと宣言すること、3つ目は ParallelLoopState クラスの Stop メソッドを実行ししかかり以外の実行を停止することです。
そして、他の Parallel の実行中にその状態を確認するのが、ParallelLoopState クラスの ShouldExitCurrentIteration プロパティです、個別に IsExceptional や IsStopped や LowestBreakIteration でも確認できます。

尚、Exception を throw すると、 throw された Exception は、全体でまとめられて AggregateException として throw されます、AggregateException の InnerExceptions に全ての Exception は格納されます。

try
{
 Parallel.For(1, 100000, (i, loopState) => {
 // if (i == 20) throw new Exception(“例外");
 // if (i == 20) loopState.Break();
 if (i == 20) loopState.Stop();
 if (loopState.ShouldExitCurrentIteration) return;
 Console.WriteLine(i);
 });
}
catch (AggregateException e) {
 Console.WriteLine(e);
}

posted @ 0:37 | Feedback (0)