首页 >后端开发 >C++ >如何在 C# 中从同步主方法调用异步方法?

如何在 C# 中从同步主方法调用异步方法?

DDD
DDD原创
2024-12-31 02:29:081023浏览

How Do I Call an Async Method from a Synchronous Main Method in C#?

从 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn