相关疑难解决方法(0)

如何在循环中使用await

我正在尝试创建一个异步控制台应用程序,它可以对集合进行一些操作.我有一个版本使用并行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)

.net c# async-await

75
推荐指数
4
解决办法
7万
查看次数

如何在Visual Studio 2017中使用C#8?

我想在Visual Studio 2017中使用C#8.0(尤其是范围和不可空的引用类型)。可能吗?

c# visual-studio visual-studio-2017 c#-8.0

23
推荐指数
3
解决办法
6001
查看次数