C# GUI 스레드 안전 업데이트 가이드
백그라운드 스레드에서 GUI를 업데이트하는 것은 까다로운 문제입니다. 직접적으로 시도하면 비정상적이거나 예상치 못한 동작이 발생할 수 있습니다.
1. 초기 설정: BackgroundWorker를 인스턴스화하고 해당 이벤트 핸들러를 구성합니다.
<code class="language-csharp">private BackgroundWorker _backgroundWorker; _backgroundWorker = new BackgroundWorker(); _backgroundWorker.DoWork += backgroundWorker_DoWork; _backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged; _backgroundWorker.WorkerReportsProgress = true;</code>
2. 백그라운드 작업: DoWork 이벤트 처리기에서 장기 실행 작업을 실행하고 진행 상황을 주기적으로 보고합니다.
<code class="language-csharp">public void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { // ... 执行你的任务 object param = "一些数据"; _backgroundWorker.ReportProgress(0, param); }</code>
3. 진행상황 보고서: ProgressChanged 이벤트 처리기에서 보고된 진행률로 GUI를 업데이트합니다.
<code class="language-csharp">private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { // 使用e.ProgressPercentage和e.UserState更新UI }</code>
4. 백그라운드 작업 시작: RunWorkerAsync를 호출하여 백그라운드 작업을 시작합니다.
<code class="language-csharp">_backgroundWorker.RunWorkerAsync();</code>
5. 연속 예약(선택 사항): 작업을 정기적으로 반복해야 하는 경우 RunWorkerCompleted 이벤트 핸들러에 다음 코드를 추가할 수 있습니다.
<code class="language-csharp">void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // UI 更新 Thread.Sleep(10000); Update(); }</code>
위 내용은 C#의 백그라운드 스레드에서 GUI를 안전하게 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!