我正在尝试创建一个异步控制台应用程序,它可以对集合进行一些操作.我有一个版本使用并行for循环另一个版本使用async/await.我希望async/await版本的工作方式类似于并行版本,但它会同步执行.我究竟做错了什么?
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() …Run Code Online (Sandbox Code Playgroud) 我想在Visual Studio 2017中使用C#8.0(尤其是范围和不可空的引用类型)。可能吗?