【发布时间】:2013-07-03 13:04:21
【问题描述】:
我试图了解等待异步在 C# 中的工作原理,但有一件事让我很困惑。我知道任何使用 await 关键字的方法都必须用 async 标记。 我的理解是,当点击带有 await 关键字的行时,该行下面的代码不会被执行。启动异步操作以执行 await 行中的语句,并将控制权返回给可以继续执行的调用方法。
问题#1:这个假设是正确的还是await关键字下面的代码仍然被执行?
其次假设我调用了一个服务方法异步并且需要返回它的结果。 return 语句位于 await 关键字下方。
问题 #2:return 语句何时命中,在异步调用完成之后还是之前?
问题 #3:我想使用该服务调用的结果,而异步操作无济于事,因为我希望在返回结果时调用调用方法。我知道这可以使用使调用同步的 Result 属性来完成。但是在数据库操作中使用异步有什么用,因为它们实际上在大多数应用程序中占用了 80% 的时间。
问题 #4:如何将异步与数据库操作一起使用?有可能并推荐吗?
问题#5:异步操作在哪种情况下有用,似乎每个api现在都在无缘无故地进行异步操作?还是我错过了使用异步操作的意义?
我的意思是说 api 无缘无故地制作 asyn 方法是因为方法必须返回一些东西,直到计算出来它们如何返回,所以从本质上讲,调用不会在某种意义上仍然阻塞在返回结果之前没用?
【问题讨论】:
-
你问了很多问题。如果您只问一个重点问题,那么 SO 效果最好。如果您有多个问题,请分别发布。
-
@Svick 我看到它的方式 MDSN 让我更加困惑,并在我的脑海中留下了很多问题。如果其他人有同样的问题,也许他们可以看到这个线程并更好地理解异步操作。我所有的问题都与一个主题有关,对我来说,发布 5 个不同的问题并希望有人能看到所有这些问题是没有意义的......
-
所以是关于分享你的知识,对吧?唯一的规则是问题应该是准确和可回答的。
-
@SyedAfrazAliRizvi 发布多个问题的问题在于,一个人可能会回答您的一些问题,而另一个人可能会回答您的部分问题。在那种情况下,你如何判断应该接受哪个答案?
标签: asynchronous async-await c#-5.0