c# - 如果我不关心它的返回值,我应该等待一个 'async Task' 函数吗?

标签 c# asynchronous

<分区>

如果异步任务函数不返回任何内容,我是否需要等待它?这会导致以下代码被包装在委托(delegate)中并在异步任务函数返回后执行吗?

Task DoSomethingAsync()
{
    return Task.Run(() =>
    {
        // Do something, but doesn't return values.
    });
}

void Test()
{
    DoSomethingAsync();  // should I await?

    // Do other things, totally not related to the async function
    Console.WriteLine("aaa");
}

在上面的示例中,如果我在 Test() 中等待 DoSomethingAsync(),是否会导致以下代码 Console.WriteLine 被包装在委托(delegate)中并仅在异步任务完成时延迟执行?

最佳答案

Do I need to await a async Task function if it doesn't return anything?

一般来说,是的。这不仅允许您检测它何时完成,还允许您响应任何错误。如果愿意,您可以存储 Task 对象并稍后await

不是等待任务是“fire and forget”,字面意思是:

  • 你不关心它是否完成。
  • 您不关心它何时完成。
  • 你不关心它是成功还是失败。

真正的即发即弃场景非常罕见。

Will that cause the following code be wrapped in a delegate and executed after the async Task function returns?

异步函数返回的Task完成后,是的。

关于c# - 如果我不关心它的返回值,我应该等待一个 'async Task' 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43102762/

相关文章:

C# 计时器与服务中的线程

c# - 如何在 Xamarin.Forms XAML 中绘制路径

python - Python 中的 Raspberry Pi 异步/连续语音识别

javascript - 如何在 Javascript 中强制同步循环执行?

asynchronous - 两个协程同时调用一个函数两次

c# - ASP.NET MVC 和 C# : HttpStatusCodeResult() vs HttpNotFound()

c# waveform - 如何显示麦克风数据

c# - 控制流图,使用 Roslyn 进行内部/内部数据流分析,.NET 编译器平台

node.js - 异步每个都会引入延迟

c# - 在回调方法中获取输入参数