>백엔드 개발 >C++ >C#의 동기식 기본 메서드에서 비동기 메서드를 어떻게 호출합니까?

C#의 동기식 기본 메서드에서 비동기 메서드를 어떻게 호출합니까?

DDD
DDD원래의
2024-12-31 02:29:08946검색

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를 호출하려고 할 때 딜레마가 발생합니다. point.

해결책

C# 7.1 이상 버전에서는 Main에서 비동기 메서드를 호출하는 것이 간단합니다.

static async Task Main(string[] args)
{
    test t = new test();
    await t.Go();
    Console.WriteLine("finished");
    Console.ReadKey();
}

이 코드는 다음을 보장합니다. Go의 비동기 작업은 프로그램이 끝나기 전에 완료됩니다.

C# 이전 버전의 경우 7.1에서는 다른 접근 방식이 필요합니다.

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으로 문의하세요.