Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 태스크(Task) 완벽 가이드 – 비동기 작업 생성 및 실행하는 4가지 방법

C#의 Task(태스크) 클래스는 비동기 작업(asynchronous operation)을 나타내는 핵심 요소입니다. .NET의 TPL(Task Parallel Library, 작업 병렬 라이브러리)에 속해 있으며, 스레드를 직접 관리하지 않고도 효율적인 병렬 처리를 구현할 수 있게 해줍니다. 이번 글에서는 C#에서 태스크를 시작하는 대표적인 4가지 방법을 예제와 함께 살펴보겠습니다.

1. 델리게이트(delegate)로 태스크 시작하기

가장 전통적인 방식은 델리게이트를 인자로 전달하여 새로운 Task 인스턴스를 생성한 뒤, Start() 메서드를 호출하는 것입니다.

Task t = new Task(delegate { PrintMessage(); });
t.Start();

2. Task.Factory로 태스크 시작하기

Task.Factory.StartNew()를 사용하면 태스크를 생성하는 동시에 즉시 실행할 수 있습니다. 생성과 실행을 한 번에 처리하므로 코드가 더욱 간결해집니다.

Task.Factory.StartNew(() => { Console.WriteLine("Welcome!"); });

3. 람다식(Lambda)으로 태스크 시작하기

람다식을 활용하면 익명 메서드보다 짧고 가독성 좋은 코드를 작성할 수 있습니다.

Task t = new Task(() => PrintMessage());
t.Start();

4. Task.Run()으로 태스크 시작하기 (권장)

가장 기본적이면서도 널리 권장되는 방법은 Task.Run()을 사용하는 것입니다. 내부적으로 스레드 풀(Thread Pool)의 백그라운드 스레드에서 작업을 실행하기 때문에 간편하고 안전합니다.

예제 코드

using System;
using System.Threading.Tasks;

public class Example {
    public static void Main() {
        Task task = Task.Run(() => {
            int a = 0;
            for (a = 0; a <= 1000; a++){}
            Console.WriteLine("{0} loop iterations ends", a);
        });
        task.Wait();
    }
}

마무리 정리

C#에서 태스크를 시작하는 방법은 크게 네 가지로 정리할 수 있습니다. 델리게이트람다식은 명시적으로 인스턴스를 생성 후 Start()를 호출해야 하며, Task.Factory.StartNew()Task.Run()은 생성과 실행을 동시에 수행합니다. 특히 최신 C# 개발 환경에서는 간결하고 안전한 Task.Run() 사용이 가장 권장되니, 상황에 맞게 활용해 보시기 바랍니다.