본문 바로가기

C#

C# 이벤트 기반 비동기 패턴(EAP) 사용법

이 글에서는 C#에서 이벤트 기반 비동기 패턴(EAP: Event-based Asynchronous Pattern)을 사용하는 방법을 간략하고 실용적으로 소개합니다. EAP는 비동기 작업을 쉽게 처리할 수 있도록 이벤트를 활용하는 패턴입니다.

1. EAP 개념 이해

이벤트 기반 비동기 패턴은 긴 작업을 비동기적으로 처리하면서 완료, 진행 상황, 취소 등의 이벤트를 통해 상태를 알립니다. 대표적으로 BackgroundWorker 클래스가 EAP를 구현한 예입니다.

2. BackgroundWorker 클래스 사용 예

BackgroundWorker는 작업 시작, 진행률 보고, 완료 이벤트를 제공합니다.

BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += (sender, e) =>
{
    for (int i = 0; i <= 100; i += 10)
    {
        System.Threading.Thread.Sleep(100); // 작업 시뮬레이션
        (sender as BackgroundWorker).ReportProgress(i);
    }
};
worker.ProgressChanged += (sender, e) =>
{
    Console.WriteLine($"진행률: {e.ProgressPercentage}%");
};
worker.RunWorkerCompleted += (sender, e) =>
{
    if (e.Error != null)
        Console.WriteLine($"에러 발생: {e.Error.Message}");
    else
        Console.WriteLine("작업 완료");
};
worker.RunWorkerAsync();

3. 요약

EAP는 이벤트를 통해 비동기 작업 상태를 알리고, BackgroundWorker 클래스로 쉽게 구현할 수 있습니다. 하지만 최신 C#에서는 async/await 기반 TAP(Task-based Asynchronous Pattern)을 권장합니다.