相关疑难解决方法(0)

什么线程在`await`关键字后运行代码?

让我发一个简单的例子:

    private void MyMethod()
    {
        Task task = MyAsyncMethod();
        task.Wait();
    }

    private async Task MyAsyncMethod()
    {
        //Code before await
        await MyOtherAsyncMethod();
        //Code after await
    }
Run Code Online (Sandbox Code Playgroud)

假设我在一个单线程应用程序中运行上面的代码 - 就像一个控制台应用程序 - .我很难理解代码//Code after await是如何运行的.

我明白当我awaitMyAsyncMethod()控制中点击关键字时会回到原点MyMethod(),但后来我将锁定该线程task.Wait().如果线程被锁定,//Code after await如果应该接受它的线程被锁定,怎么能运行?

是否创建了一个新线程来运行//Code after await?或者主线程神奇地走出task.Wait()去运行//Code after await

我不确定这是怎么回事?

c# multithreading asynchronous async-await

8
推荐指数
2
解决办法
3203
查看次数

标签 统计

async-await ×1

asynchronous ×1

c# ×1

multithreading ×1