C#の非同期処理について質問です。
c#
1namespace ConsoleApp1 { 2 class Program { 3 static void Main() { 4 Task[] task = new Task[10]; 5 for (int i = 0; i < 10; i++) { 6 task[i] = Task.Factory.StartNew(() => Method(i)); 7 } 8 Task.WaitAll(task); 9 } 10 11 static void Method(int i) { 12 Console.WriteLine(i); 13 } 14 } 15}
想定では
0
1
2
3
4
5
6
7
8
9
みたいに、並び順はこの通りでは無いと思いますが0~9が出力されると思っていたのですが、
実際は
9
9
9
9
9
9
2
9
9
1
のように0~9のうち1つの数字が多数(上記の場合は9)、他はその他の数字が少し(上記の場合は1と2)がまばらに出力されるというわけのわからない事象になっています。
最初の例のようにキッチリ0~9が出力されないのは何故なのでしょうか。
また、そのように出力できるようにするソース修正案を教えて下さい。
このソースは、とあるプライベートのプログラムを簡略したもので、非同期処理の練習として書いたものなので、非同期でWriteLineにすることを絶対条件としています。
よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー