본문 바로가기

Programming/C#

C# 비동기 프로그래밍 예제 Asynchronous programming Task void async await

728x90
using System.Threading.Tasks;

class MainClass
{
    static async Task Main(string[] args)
    {
        Task t5 = MyAsync.DoAsync(5); // 5초
        await MyAsync.DoAsync(3); // 3초
        MyAsync.DoAsync(2); // 2초
        await t5;
    }
}
public class MyAsync
{
    public static async Task DoAsync(int num = 1)
    {
        for(int i = num; i > -1; i--)
        {
            await Task.Delay(1000); // 1초 기다림
            Console.WriteLine($"{num} {i}");
        }
    }
}

 

★async Task DoAsync

async 비동기 메소드를 정의

리턴 타입은 Task, Task<TResult>, void가 있음

Task는 리턴값이 없음

Task<TResult>는 TResult 타입의 리턴값을 가짐

void는 리턴값이 없음, await 할 수 없음, 이벤트 핸들러에 사용

★await Task.Delay

await로 비동기 메소드 동작 기다림

 

await t5를 주석처리해보면

await MyAsync.DoAsync(3)

동작이 끝나는 시점(3초)에 프로그램이 종료된다.

MyAsync.DoAsync(5)이 동작이 끝나는 걸 기다려주지 않는다.

 

await

(…을) 기다리다

728x90

'Programming > C#' 카테고리의 다른 글

C# dynamic csharp  (0) 2025.05.12
C# 튜플 tuple csharp  (0) 2025.05.12
C# 델리게이트 메소드 함수 포인터  (0) 2025.03.09
C# 웹소켓 WebSocket 주요 메서드 정리  (0) 2025.02.28
람다 표현식  (0) 2025.02.14