UI 차단 없이 외부 계산 중에 WinForms 진행률 표시줄 업데이트
WinForms 애플리케이션은 외부 라이브러리에서 수행되는 긴 계산 중에 진행 상황을 표시해야 하는 경우가 많습니다. 핵심은 계산 방법을 UI에 의존하지 않고 진행률 표시줄을 업데이트하는 것입니다.
BackgroundWorker 활용
BackgroundWorker
구성요소는 효과적인 솔루션을 제공합니다. 별도의 스레드에서 계산을 병렬로 실행할 수 있으므로 기본 UI 스레드에 대한 진행 상황을 주기적으로 업데이트할 수 있습니다. 다음은 그림입니다:
<code class="language-csharp">private void Calculate(int i) { double pow = Math.Pow(i, i); } private void button1_Click(object sender, EventArgs e) { progressBar1.Maximum = 100; progressBar1.Step = 1; progressBar1.Value = 0; backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int j = 0; j < 100; j++) { Calculate(j); // Perform your external calculation worker.ReportProgress(j); // Report progress to the UI thread Thread.Sleep(100); // Simulate work } } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar1.Value = e.ProgressPercentage; }</code>
이 시나리오에서 backgroundWorker1_DoWork
는 ReportProgress
을 통해 계산을 관리하고 진행 상황을 보고합니다. backgroundWorker1_ProgressChanged
그런 다음 그에 따라 진행률 표시줄을 업데이트합니다.
BackgroundWorker 사용의 장점
이 방법은 몇 가지 주요 이점을 제공합니다.
위 내용은 UI를 차단하지 않고 외부 계산 중에 WinForms 진행률 표시줄을 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!