Task는 C#에서 비동기 작업을 나타내는 객체이다.
이를 통해 시간 소모가 큰 작업을 비동기적으로 수행하고 그 작업의 상태를 추적할 수 있다.
Task는 비동기 프로그래밍에서 핵심적인 역할을 하며, 특히async와await키워드와 함께 자주 사용된다.1. Task란?
Task는 작업의 진행 상태와 결과를 나타내는 객체이다.- 비동기 작업이 완료될 때까지 기다리는 용도로 주로 사용되며, 작업이 완료되면
Task객체를 통해 작업의 결과를 확인할 수 있다.Task를 이용하면 코드의 비동기 작업을 수행하고, 필요할 경우 해당 작업이 끝날 때까지 대기(await사용)를 할 수 있다.2. Task의 종류
Task: 반환값이 없는 작업을 나타낸다. 비동기 작업이 완료되면Task객체는 단순히 완료 상태를 가리킨다.Task<T>: 특정 데이터 타입T를 반환하는 작업을 나타낸다. 작업이 완료되면Task<T>객체를 통해 작업 결과 값을 가져올 수 있다.3. Task의 사용 예제
(1) Task 사용 예
Task는 반환값이 없는 비동기 작업을 나타낼 때 사용한다.public async Task RunTaskAsync() { Console.WriteLine("작업 시작..."); await Task.Delay(2000); // 2초 대기 (예: 작업이 걸리는 시간을 대기) Console.WriteLine("작업 완료!"); }위 코드에서
Task.Delay(2000)은 2초 동안 대기하는 비동기 작업을 수행하고, 그 동안 메인 스레드는 다른 작업을 처리할 수 있다.(2) Task 사용 예
Task<T>는 반환값이 있는 비동기 작업을 나타내며,await을 통해 작업 결과를 가져올 수 있다.public async Task<int> CalculateAsync() { await Task.Delay(2000); // 2초 대기 return 42; // 결과 반환 } public async Task ExecuteAsync() { int result = await CalculateAsync(); Console.WriteLine($"계산 결과: {result}"); }위 예제에서
CalculateAsync는 2초 대기 후int값을 반환하는 작업이다.await CalculateAsync()로 결과를 받기 전까지 비동기 대기를 하고, 완료 후result에 결과를 할당한다.4. Task의 주요 기능
- 작업 추적:
Task는 작업의 진행 상태 (대기 중, 실행 중, 완료, 실패 등)를 관리하여 작업이 성공적으로 완료되었는지, 실패했는지 등을 확인할 수 있다.- 예외 처리: 비동기 작업에서 발생한 예외를
await을 통해 처리할 수 있다.- 병렬 처리 지원: 여러
Task를 병렬로 실행하여 작업의 효율을 높일 수 있다.5. Task를 사용하는 이유
Task를 사용하면 긴 작업을 비동기적으로 처리할 수 있어, 애플리케이션의 응답성을 유지할 수 있다.- 여러
Task를 동시에 실행할 수 있으므로 작업 속도가 향상되고 리소스 활용이 최적화된.- 비동기 작업을 통해 가독성 높은 비동기 코드를 작성할 수 있어 유지보수가 쉬워진다.
요약
Task는 비동기 작업을 나타내는 객체로, 작업의 상태 추적과 비동기 대기를 지원한다.Task는 반환값이 없는 작업,Task<T>는 특정 반환값을 갖는 작업을 나타낸다.async,await와 함께 비동기 작업을 쉽게 구현하고 애플리케이션의 응답성을 높이는 데 유용하다.