[C#] 비동기 프로그래밍 완벽 가이드
2025. 4. 17. 16:03ㆍ개발이야기
728x90
반응형
반응형
async와 await
C#에서는 비동기 작업을 간단하고 깔끔하게 처리할 수 있는 키워드가 있습니다.
바로 async와 await입니다.
이번 글에서는 비동기 프로그래밍의 필요성과 함께, async/await 사용법을 예제와 함께 쉽게 정리합니다.
1. 비동기 프로그래밍이란?
"긴 작업을 백그라운드에서 처리하면서, 메인 프로그램은 멈추지 않게 하는 것"
- 파일 다운로드, 데이터베이스 조회, 웹 API 호출처럼 시간이 오래 걸리는 작업은 비동기 처리 필수
- 비동기를 쓰지 않으면 UI가 멈추거나 프로그램이 느려짐
2. async와 await 기본 구조
기본 형태
async Task 작업이름()
{
await 긴작업();
}
- async 키워드는 메서드를 비동기로 만듦
- await는 비동기 작업이 끝날 때까지 기다렸다가 다음 코드를 실행
간단한 예제
public async Task DoWorkAsync()
{
Console.WriteLine("작업 시작");
await Task.Delay(2000); // 2초 대기
Console.WriteLine("작업 완료");
}
// 호출
await DoWorkAsync();
3. async/await 키워드 상세 설명
키워드 설명
async | 메서드를 비동기로 선언 (Task 반환) |
await | 비동기 작업을 기다렸다가 완료되면 다음 코드 실행 |
반환형
- async Task: 반환값 없음 (void처럼 사용)
- async Task<T>: 결과값 T를 비동기로 반환
- async void: 이벤트 핸들러에서만 사용 권장 (일반 메서드에서는 사용 지양)
4. 여러 비동기 작업 동시에 실행하기
Task.WhenAll
여러 작업을 병렬로 실행하고 모두 끝날 때까지 기다림
async Task RunMultipleTasksAsync()
{
Task t1 = Task.Delay(1000);
Task t2 = Task.Delay(2000);
Task t3 = Task.Delay(1500);
await Task.WhenAll(t1, t2, t3);
Console.WriteLine("모든 작업 완료");
}
주의사항
- await를 쓰지 않으면 Task만 생성되고 실제 작업은 기다리지 않음
- async void는 일반 메서드에서는 가급적 사용하지 말 것 (예외 추적이 어려움)
- 비동기 메서드는 반드시 Task 또는 Task<T>를 반환하는 것이 좋음
이번 글에서는 C# 비동기 프로그래밍의 핵심인 async/await 개념을 정리했습니다.
- async로 메서드를 비동기로 선언
- await로 비동기 작업을 기다리면서 자연스럽게 코드 진행
- 여러 Task를 동시에 실행하려면 Task.WhenAll 활용
728x90
반응형
'개발이야기' 카테고리의 다른 글
[C#] 실전 미니 프로젝트 - 파일 관리 도구 만들기 (2) | 2025.04.17 |
---|---|
[C#] 비동기와 병렬 처리, 그리고 Task vs Thread 차이 완전 정리 (0) | 2025.04.17 |
[C#] 이벤트와 델리게이트 완전 정복 (0) | 2025.04.17 |
[C#] 예외 처리와 파일 입출력 완벽 가이드 (0) | 2025.04.17 |
[C#] 컬렉션과 LINQ 완전 정리 (0) | 2025.04.17 |