次のプログラムがあります。
static void Main(string[] args) { RunTest(); }
private static void RunTest() {
DoIOWorkFiveTimesAsync().Wait();
}
private static async Task DoIOWorkFiveTimesAsync() {
for (int i = 0; i < 5; ++i) {
Console.WriteLine("Before: " + i);
await DoIOWorkAsync();
Console.WriteLine("After: " + i);
}
}
private static Task DoIOWorkAsync() {
Console.WriteLine("Doing work...");
return new Task(() => Thread.Sleep(1500));
}
私は見ることを期待します:
Before: 1
Doing work...
After: 1
Before: 2
Doing work...
After: 2
Before: 3
Doing work...
After: 3
Before: 4
Doing work...
After: 4
Before: 5
Doing work...
After: 5
しかし、代わりに、次のようになります。
Before: 1
Doing work...
そして、それ以上進むことはありません。私は C#5 の async/await 機能を理解しようと試みましたが、常に効果がありませんでした。繰り返しますが、説明は私を避けます。