下面两行有什么区别。
await SkillReporterDatabase.Database.SaveAsync(someObject);
_ = SkillReporterDatabase.Database.SaveAsync(someObject);
哪一个是首选?有时,当我在等待中遇到一些问题时,我会使用_=,它可以解决问题。我在网上看不到任何解释这两者区别的资源。
的区别是丢弃(_
(不关心一旦SaveAsync
变为异步时会发生什么,这可能是所做的;这有两个重要的副作用:
- 您将不知道保存是否失败
- 如果您通过
Database
执行任何其他操作,则可能将在单个上下文/连接上运行重叠操作,这通常不受支持
因此,在这种情况下,await
可能是首选。有时可以放弃任务,但这通常意味着当您在后台启动与当前流没有进一步交互的东西时。
如果没有等待,以后的操作将不会被SaveAsync
调用阻止,因此将并发运行。丢弃只是保存任务(从概念上讲,任务有点像进度条(,而不是等待调用时保存任务的结果
所以CCD_ 6返回一个CCD_。在该Task
上调用await
将阻塞,直到任务完成并返回结果。不调用wait,而只是扔掉Task,就像在C++中扔掉一个指针一样——你的程序会启动任务,然后忘记它——它可能仍然完成,但这个方法中的代码永远不会发现它是否完成。