相关疑难解决方法(0)

在ASP.NET Core中相关的ConfigureAwait(false)?

我在GitHub上偶然发现了一个问题(https://github.com/HTBox/allReady/issues/1313),在那里他们讨论了如何ConfigureAwait(false)ASP.NET核心中删除代码

呼叫ConfigureAwait(false)是多余的,什么都不做

我能找到的最好的答案是一个"旁注"(来自Stephen Cleary,https: //stackoverflow.com/a/40220190/2805831 )

ASP.NET Core不再具有"上下文"

那么,ASP.NET Core中ConfigureAwait(false)真的没必要(即使使用完整的.Net Framework)?在某些情况下,它在性能方面是否有任何实际的好处,或者在结果/语义上有所不同?

编辑:如果我将其作为控制台应用程序托管或在IIS中,它在这方面有所不同吗?

.net async-await asp.net-core

70
推荐指数
2
解决办法
2万
查看次数

什么线程在`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
查看次数