相关疑难解决方法(0)

按顺序执行多个异步方法调用

好像我过去曾经遇到过这个问题的答案,但现在我无法找到它.

假设我有两个异步方法,Method1和Method2.如果我需要按顺序调用Method1然后调用Method2(读取,Method1必须在Method2之前完成),以下代码是否正确?

await Method1();
await Method2();
Run Code Online (Sandbox Code Playgroud)

根据此处对另一个SO问题的接受答案的信息以及MSDN文章中的信息,我相信这是正确的方法.此外,这段代码似乎可行,但我不想引入一个稍微难以追踪的微妙错误.

c# async-await

5
推荐指数
2
解决办法
5368
查看次数

异步等待行为

我正在试验 async-await 并且我遇到了这种相当奇怪的行为,至少对我来说是这样。
我创建了三种模拟长时间运行任务的方法。
考虑两个按钮单击处理程序:
对于 button1_click,经过的时间约为 6000 毫秒,而 button2_click 约为 3000 毫秒。
我无法理解为什么会发生这种情况,即 6000 毫秒与 3000 毫秒。

    private async Task<string> TaskOne()
    {
        await Task.Delay(1000);
        return "task one";
    }

    private async Task<string> TaskTwo()
    {
        await Task.Delay(2000);
        return "task two";
    }

    private async Task<string> TaskThree()
    {
        await Task.Delay(3000);
        return "task three";
    }
    
    //time elapsed = 6000+ms
    private async void button1_Click(object sender, EventArgs e)
    {
        var watch = new Stopwatch();
        watch.Start();

        await TaskOne();
        await TaskTwo();
        await TaskThree();
        
        watch.Stop();
        textBox3.Text = watch.ElapsedMilliseconds.ToString();
    } …
Run Code Online (Sandbox Code Playgroud)

c# async-await

3
推荐指数
2
解决办法
96
查看次数

标签 统计

async-await ×2

c# ×2