回答編集履歴

2

追記

2022/08/09 00:48

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  コンソール出力を見ると、質問のコードの Console.WriteLine("[RunHeavyProcs] waiting all-task"); は for ループを抜けてから実行されており、その後 HeavyProc が非同期に実行されコンソールに [HeavyProc] 5 Start... と出力されています。
6
6
 
7
- ・・・と私が言うだけでは説得力がないかもしれないので、@IT の記事を紹介しておきます。下の方の「参考:Parallelクラスを使わずに並列実行する」のセクションを見てください。
7
+ ・・・と私が言うだけでは説得力がないかもしれないので、@IT の記事を紹介しておきます。下の方の「参考:Parallelクラスを使わずに並列実行する」のセクションのコードの下の注記を見てください。
8
8
 
9
9
  ループをParallelクラスで並列処理にするには?[C#/VB]
10
10
  https://atmarkit.itmedia.co.jp/ait/articles/1706/21/news021.html

1

追記

2022/08/09 00:44

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,8 @@
1
1
  > なぜ「5」が出力されるのか全く見当がつかない状態です。
2
2
 
3
3
  for ループを抜けてから非同期処理が開始されていて、その時点の変数 i の値は質問のコード例では 5 だからでしょう。
4
+
5
+ コンソール出力を見ると、質問のコードの Console.WriteLine("[RunHeavyProcs] waiting all-task"); は for ループを抜けてから実行されており、その後 HeavyProc が非同期に実行されコンソールに [HeavyProc] 5 Start... と出力されています。
4
6
 
5
7
  ・・・と私が言うだけでは説得力がないかもしれないので、@IT の記事を紹介しておきます。下の方の「参考:Parallelクラスを使わずに並列実行する」のセクションを見てください。
6
8