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 |