728x90
반응형
WPF & C# - 비동기 이벤트 - BackgroundWorker ( 백그라운드워커 / ChangedEvent / Completed / Event ) |
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로 넘어가는것이고 percent는 ProgressChanged에 이벤트를 발생시키기 위한것일 뿐이었다.
자료
728x90
반응형
'Programing (프로그래밍) > WPF & C# (C Sharp)' 카테고리의 다른 글
WPF & C# - Grid 만들기 (0) | 2021.03.08 |
---|---|
WPF & C# - struct 구조체 (0) | 2021.03.03 |
WPF & C# - Interlocked ( 멀티쓰레딩에서 변수 변경 시 필수 / lock 대체 / 멀티쓰레드 / MultiThread / Threading ) (0) | 2021.02.18 |
WPF & C# - TextBoxWaterMark ( 워터마크 / 배경글자 / 텍스트박스 ) (0) | 2021.02.17 |
WPF & C# - 멀티쓰레딩 ( 멀티쓰레드 / MultiThread / Threading ) (1) | 2021.02.04 |
WPF & C# - Error 다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다 ( 에러 / 쓰레드 / Thread / Dispatcher.Invoke()) (0) | 2021.02.01 |
WPF & C# - 열행 맞추어 Grid 생성하기 ( makeGrid / ColumnDefinitions / RowDefinitions ) (0) | 2021.01.30 |
WPF & C# - 비동기 async / await ( UI와 연산 분리 / 작업 후 결과값 리턴 방식 ) (1) | 2021.01.29 |