等待和使用丢弃之间的区别

Ram*_*esh 1 c# asynchronous synchronous async-await

下面两行有什么区别。

await SkillReporterDatabase.Database.SaveAsync(someObject);

_ = SkillReporterDatabase.Database.SaveAsync(someObject);
Run Code Online (Sandbox Code Playgroud)

哪一个是首选?有时当我遇到等待的问题时,我使用 _ = 并解决了问题。我在网上看不到任何资源来解释这两者之间的区别。

Mar*_*ell 9

区别是,丢弃(_)不关心会发生什么SaveAsync,一旦它变成异步的,它可能不会做的; 这有两个重要的副作用:

  1. 你不会知道保存是否失败
  2. 如果您通过 执行任何其他操作Database,您可能会在单个上下文/连接上运行重叠操作,这通常不是受支持的场景

所以在这种情况下,await可能是首选。有时候,它是确定丢弃的任务,但是当你开始有后台的东西,通常意味着没有进一步的互动与当前的流动。