如何在不需要等待当前函数/线程的结果的情况下运行异步任务?

Tim*_*rid 4 c# multithreading asynchronous

有没有机会避免等待?我们想要的例子如下:

async Task SomeTask()  
{  
   await ChildTask();

   //Then something we want to be done without waiting till "Child Task" finished  
   OtherWork();  
}  

async Task ChildTask()  
{  
   //some hard work   
}  
Run Code Online (Sandbox Code Playgroud)

Joh*_*ner 8

完成Task后捕获然后等待它OtherWork:

async Task SomeTask()  
{  
   var childTask = ChildTask();

   //Then something we want to be done without waiting till "Child Task" finished  
   OtherWork();  
   await childTask;
}  
Run Code Online (Sandbox Code Playgroud)


Mat*_*zer 5

您没有被迫等待异步Task。如果您不这样做await,那是因为您不在乎它是否成功完成(弃的方法)。

如果这样做,则不应async在方法/委托签名中使用关键字。

  • 这是由警告“警告CS1998”引起的。此异步方法缺少“等待”运算符,将同步运行。考虑使用'await'操作符来等待非阻塞API调用,或者使用'await Task.Run(...)'在后台线程上执行CPU绑定工作,这使人们认为如果您执行此任务,则该任务将不会异步不要使用await关键字 (2认同)