相关疑难解决方法(0)

C#async/await有/无等待(火灾和忘记)

我有以下代码:

    static async Task Callee()
    {
        await Task.Delay(1000);
    }

    static async Task Caller()
    {
        Callee(); // #1 fire and forget
        await Callee(); // #2 >1s
        Task.Run(() => Callee()); // #3 fire and forget
        await Task.Run(() => Callee()); // #4 >1s
        Task.Run(async () => await Callee()); // #5 fire and forget
        await Task.Run(async () => await Callee()); // #6 >1s
    }

    static void Main(string[] args)
    {
        var stopWatch = new Stopwatch();
        stopWatch.Start();
        Caller().Wait();
        stopWatch.Stop();
        Console.WriteLine($"Elapsed: {stopWatch.ElapsedMilliseconds}");
        Console.ReadKey();
    }
Run Code Online (Sandbox Code Playgroud)

#1以最简单的方式点火和忘记.#2只是等待.有趣的东西从#3开始.这些电话背后的深度逻辑是什么?

我知道在ASP.NET中使用fire'n'forget作为警告的指向这里 …

c# asynchronous async-await

1
推荐指数
1
解决办法
2965
查看次数

标签 统计

async-await ×1

asynchronous ×1

c# ×1