C# 控制台应用程序中的异步等待

C# 控制台应用程序中的异步等待,c#,.net,asynchronous,console-application,C#,.net,Asynchronous,Console Application,异步(使用async/await)编写windows控制台应用程序是否有意义,而它应该按顺序运行?有一些异步候选方法(调用webservice、将数据加载到数据库),但事实上,一切都应该一步一步地运行。它只是一个维护工具 是否有理由编写异步代码?不确定这是否是一个严格意义上的SO问题,特别是因为没有“正确答案”,但是 不久前我们甚至不会问这个问题。只需编写同步代码就可以了。因此,显然没有必要将其异步编写,但它确实有很多好处 正如@Silvermind指出的,您可以允许取消 可能更容易获得更好的

异步(使用async/await)编写windows控制台应用程序是否有意义,而它应该按顺序运行?有一些异步候选方法(调用webservice、将数据加载到数据库),但事实上,一切都应该一步一步地运行。它只是一个维护工具


是否有理由编写异步代码?

不确定这是否是一个严格意义上的SO问题,特别是因为没有“正确答案”,但是

不久前我们甚至不会问这个问题。只需编写同步代码就可以了。因此,显然没有必要将其异步编写,但它确实有很多好处

  • 正如@Silvermind指出的,您可以允许取消
  • 可能更容易获得更好的反馈——例如伪进度“条”——比如屏幕上的星号或百分比计数器。取决于你在做什么
  • 未来的“证明”(哈哈)-当有人告诉你为它编写WinForms或WPF应用程序,因为他们发现“很难记住所有那些复杂的命令行开关”。你已经掌握了代码的精髓
  • 许多.net库正在添加异步代码,MS开始将它们视为处理任务的标准/正确方式(双关语:-)
  • 如果它是一个相当简单的应用程序,那么你可以把它作为练习使用异步代码的好借口。异步代码通常是很棘手的,所以练习编写它不会有什么坏处(我认为)
当然,还有一个古老的最爱——“因为你能”

如果你需要快速完成这个应用程序,那就用久负盛名的方式把它搞定,然后继续前进。否则,如果你有一点时间,那么用所有聪明的底层比特和bob构建它。但是,归根结底,不要花太多时间担心它


当然,这都是我的拙见。

如果您希望代码同步运行,那么就不要使用异步方法。

使用异步,您可以优雅地取消任务。如果您在
wait
之后打印文本,您将需要一个上下文来避免冲突。否则,你可能不同意你的第一句话——答案是正确的。不过,只要能完成任务,答案可能不会有错。@Gusdor——事实上,正如我所说的——异步很棘手(需要练习)。但是,没有提到打印,在维护应用程序中打印的可能性似乎较小。@ErikForbes-足够公平了。但是同步或异步都可以工作并完成任务。没有更多的信息,我们无法判断一种方法是对的还是错的。这取决于我所想的更广泛的上下文。我同意,这确实取决于上下文,但考虑到他到目前为止所说的上下文,为了使用异步而使用异步只会毫无目的地增加额外的复杂性。