본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

WPF & C# - 비동기 이벤트 - BackgroundWorker ( 백그라운드워커 / ChangedEvent / Completed / Event )

728x90
반응형

 

 WPF & C# - 비동기 이벤트 - BackgroundWorker ( 백그라운드워커 / ChangedEvent / Completed / Event )

BackgroundWorker.zip
0.04MB
BackgroundWorker.exe
0.01MB

using System.Windows;
using System.Threading;
using System.ComponentModel;

BackgroundWorker bw;

private void btn_Click(object sender, RoutedEventArgs e)
{
    bw = new BackgroundWorker();
    bw.DoWork += new DoWorkEventHandler(bw_DoWork);
    bw.ProgressChanged += bw_ProgressChanged;
    bw.RunWorkerCompleted += bw_RunWorkerCompleted;
    bw.WorkerReportsProgress = true;
    bw.RunWorkerAsync();
}

void bw_DoWork(object sender, DoWorkEventArgs e)
{
    // Running on a worker thread
    for (int i = 0; i < 10; ++i)
    {
        int percent = i * 1;
        bw.ReportProgress(percent);
        Thread.Sleep(1000);
    }
}
void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    // Running on a UI thread
    lbl.Content = "작업 중: " + e.ProgressPercentage + "% 완료";
}

void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    // Running on a UI thread
    lbl.Content = "완료";
}

* 처음에 bw.ReportProgress(percent); 이부분에서 percent 가 100이되면 Completed로 넘어가는줄 알았다.

근데... 그게 아니었다.

bw_DoWork 곧 이벤트핸들러가 종료 되면 Comleted로 넘어가는것이고 percentProgressChanged에 이벤트를 발생시키기 위한것일 뿐이었다.

 

 

자료

m.blog.naver.com/hoyo1744/221727312224

 

[wpf]이벤트 기반 비동기 패턴

*한빛미디어의 WPF Programming 사용자 경험을 바꾸는 기술을 공부하여 정리한 내용입니다.​​닷넷2.0...

blog.naver.com

728x90
반응형