从 Main 调用异步方法:综合指南
简介
以下情况下会出现问题开发人员需要从传统同步上下文(例如 Main 方法)调用异步方法。在探索 C# 中的异步编程领域时,经常会出现这种情况。
问题
给出以下异步方法:
public class test { public async Task Go() { // ... various async operations } }
当尝试从程序的同步入口 Main 方法调用 Go 时,就会出现困境
解决方案
在 C# 7.1 及更高版本中,从 Main 调用异步方法非常简单:
static async Task Main(string[] args) { test t = new test(); await t.Go(); Console.WriteLine("finished"); Console.ReadKey(); }
此代码确保Go 的异步操作在程序结束之前完成。
对于 7.1 之前的 C# 版本,需要采取不同的方法:
static void Main(string[] args) { test t = new test(); t.Go().Wait(); Console.WriteLine("finished"); Console.ReadKey(); }
调用 Wait() 会阻塞当前线程,直到 Go 的异步操作结束。
异步方法的好处
消除回调是使用 async 关键字进行异步编程的一个关键优势,回调会使代码变得复杂且难以维护。它实现了干净且顺序的执行流程,同时允许其他操作同时进行。
以上是如何在 C# 中从同步主方法调用异步方法?的详细内容。更多信息请关注PHP中文网其他相关文章!