我将从另一篇文章中提及this answer by Stephen Cleary。
我正在尝试实现类似的东西,但我对C#还不熟悉。
我的问题是:await
已应用于ReadAsync
,如果ReadAsync
尚未完成,则会从ReadAllFileAsync
方法返回Main
,然后,会发生什么? Main
是否继续运行?
我的问题的原因是我想知道秒表经过的时间不会受此影响。
如果重要的工作是阅读文件(因为我们正在计时),并且没有可能被阻止的UI,为什么要使用async
/ await
?
答案 0 :(得分:0)
我将在另一篇文章中提到Stephen Cleary的回答。
好的,但请务必留意Mike Marynowski的评论。这很重要。
await应用于ReadAsync,如果ReadAsync尚未完成,则它从ReadAllFileAsync方法返回Main,然后会发生什么? Main继续运行吗?
是。 Main
继续执行,接下来要做的就是从Wait
返回的任务调用ReadAllFileAsync
,它阻塞当前线程直到方法完成。阻止这样的任务通常是一个坏主意,但必须在控制台应用程序的Main
方法中完成,以防止应用程序退出。
通常,在为异步方法计时时,您需要在调用方法之前立即启动计时器,并在返回的任务完成后停止计时器。这通常是在await
任务之后停止计时器来完成的,但在该示例中,它是通过在Wait
任务之后停止计时器来完成的。