Tôi đang cố gắng tạo một ứng dụng bảng điều khiển không đồng bộ thực hiện một số hoạt động trên một bộ sưu tập. Tôi có một phiên bản sử dụng song song cho vòng lặp khác phiên bản sử dụng async / await. Tôi mong đợi phiên bản async / await hoạt động tương tự như phiên bản song song nhưng nó thực thi đồng bộ. Tôi đang làm gì sai?
class Program
{
static void Main(string[] args)
{
var worker = new Worker();
worker.ParallelInit();
var t = worker.Init();
t.Wait();
Console.ReadKey();
}
}
public class Worker
{
public async Task<bool> Init()
{
var series = Enumerable.Range(1, 5).ToList();
foreach (var i in series)
{
Console.WriteLine("Starting Process {0}", i);
var result = await DoWorkAsync(i);
if (result)
{
Console.WriteLine("Ending Process {0}", i);
}
}
return true;
}
public async Task<bool> DoWorkAsync(int i)
{
Console.WriteLine("working..{0}", i);
await Task.Delay(1000);
return true;
}
public bool ParallelInit()
{
var series = Enumerable.Range(1, 5).ToList();
Parallel.ForEach(series, i =>
{
Console.WriteLine("Starting Process {0}", i);
DoWorkAsync(i);
Console.WriteLine("Ending Process {0}", i);
});
return true;
}
}