C\#에서 backgroundWorker 류 의 용법 에 대한 상세 한 설명
5599 단어 C#backgroundWorker종류
BackgroundWorker 는 UI 인터페이스 를 업데이트 하 는 데 사용 할 수 있 지만,보통 Progressbar(진도 바)컨트롤 에 사 용 됩 니 다.
UI 업데이트
private void Form1_Load(object sender, EventArgs e)
{
this.backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.textBox1.Text = "UI";
}
BackgroundWorker 클래스 로 시간 이 걸 리 는 동작 을 수행 합 니 다.BackgroundWorker 클래스 는 System.Component Model 네 임 스페이스 에 있 습 니 다.
VS 공구 상자 에 BackgroundWorker 구성 요소 가 있 습 니 다.바로 이 종류 입 니 다.
backgroundwork 의 주요 이벤트 및 매개 변수:
1.DoWork―BackgroundWorker.RunWorkerAsync 방법 을 실행 할 때 이 사건 을 촉발 하고 DoWorkEventArgs 인 자 를 전달 합 니 다.
2.RunWorkerComplete―비동기 작업 이 완료 되 거나 중간 에 종료 되면 이 사건 이 발생 합 니 다.
3.ProgressChanged―작업 처리 에서 얻 은 처리 상태 변 화 는 BackgroundWorker.Report Progress(int)방법 으로 이 사건 을 촉발 하고 ProgressChanged EventArgs 를 전달 합 니 다.이 매개 변 수 는 UI 인터페이스 에 progressbar 컨트롤 을 설정 합 니 다.
backgroundwork 의 주요 방법:
1. BackgroundWorker.RunWorkerAsync―'시동'비동기 호출 방법 은 RunWorkerAsync(),RunWorkerAsync(object argument)를 두 번 다시 불 러 옵 니 다.두 번 째 재 부팅 은 비동기 호출 에 사용 할 수 있 는 인 자 를 제공 합 니 다.(만약 여러 개의 매개 변 수 를 전달 하려 면 어떻게 해 야 합 니까?하나의 종 류 를 사용 하여 그들 을 전달 하 세 요)이 방법 을 사용 하면 DoWork 이벤트 가 발생 합 니 다.또한 DoWork 사건 을 처리 하 는 함수 에 DoWorkEventArg 인 자 를 전달 하기 위해 RunWorkerAsync 가 전달 하 는 인 자 를 포함 합 니 다.해당 DoWork 의 처리 함수 에서 구체 적 으로 복잡 한 조작 을 할 수 있 습 니 다.
2.BackgroundWorker.ReportProgress―지루 한 작업 에서 사용자 에 게 진 도 를 계속 피드백 해 야 합 니 다.그러면 호출 할 수 있 는 ReportProgress(int percent)는 ReportProgress 방법 을 호출 할 때 ProgressChanged 이 벤트 를 촉발 합 니 다.0 에서 100 사이 의 정 수 를 제공 합 니 다.배경 활동 이 완 료 된 백분율 을 표시 합 니 다.이벤트 처리 프로그램 에 상태 정 보 를 전달 할 수 있 도록 모든 대상 을 두 번 째 매개 변수 로 제공 할 수 있 습 니 다.이 과정 을 전달 하 는 ProgressChanged EventArgs 매개 변수 속성 으로서 백분율 과 대상(제공 하면)은 ProgressChanged 이벤트 처리 프로그램 에 전 달 됩 니 다.이 속성 들 은 각각 Progress Percentage 와 UserState 로 명명 되 었 으 며,이벤트 처리 프로그램 은 필요 한 방식 으로 사용 할 수 있 습 니 다.(메모:BackgroundWorker.Worker Reports Progress 속성 이 true 로 설정 되 어야 만 사용 할 수 있 습 니 다.
3. BackgroundWorker.Cancel Async-그러나 비동기 호출 을 종료 해 야 할 때 이 방법 을 사용 합 니 다.그러나 샘플 이 부족 합 니 다.BackgroudWorker.CancellationPending 속성 을 true 로 설정 하기 때 문 입 니 다.구체 적 인 비동기 호출 처리 가 필요 할 때 BackgroudWorker.CancellationPending 이 true 인지 계속 확인 하고 사실 이 라면 종료 하 십시오.(메모:BackgroundWorker.Worker Supports Cancellation 속성 이 true 로 설정 되 어야 만 사용 할 수 있 습 니 다.
백그라운드 Worker 구성 요소
중요 속성:
1.CancellationPending 에서 값 을 가 져 옵 니 다.프로그램 이 배경 작업 을 취소 할 지 여 부 를 표시 합 니 다.DoWork 이벤트 에서 CancellationPending 속성 을 판단 하면 배경 작업 을 취소 해 야 하 는 지 여 부 를 인정 할 수 있 습 니 다(즉,스 레 드 종료).
2.WorkerReports Progress:값 을 가 져 오 거나 설정 합 니 다.이 값 은 BackgroundWorker 가 진도 업 데 이 트 를 보고 할 수 있 는 지 를 표시 합 니 다.
중요 한 방법:
1.CancelAsync 가 걸 려 있 는 배경 작업 을 취소 해 달라 고 요청 합 니 다.
2,RunWorkerAsync 시작 배경 작업
3.보고 진행 진행 진행 진행 변경 사건 발생
중요 이벤트:
1.DoWork 가 RunWorkerAsync 를 호출 할 때 발생
2.ProgressChanged 에서 ReportProgress 호출 시 발생
3.RunWorkerComplete 배경 작업 이 완료 되 었 거나 취소 되 었 거나 이상 이 발생 했 을 때
또한 세 가지 중요 한 매개 변 수 는 RunWorkerComplete EventArgs 와 DoWorkEventArgs,ProgressChanged EventArgs 이다.
예:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Delegate3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//
// RunWorkerAsync() , DoWork
this.backgroundWorker2.RunWorkerAsync();
}
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
backgroundWorker2.WorkerReportsProgress = true;
for (int i = 1; i <= 100; i++)
{
// , 。
// CancelAsync CancellationPending false
if (backgroundWorker2.CancellationPending)
{
backgroundWorker2.ReportProgress(i, String.Format("{0}%, ", i));
}
// ReportProgress , ProgressChanged
backgroundWorker2.ReportProgress(i, String.Format("{0}%", i));
System.Threading.Thread.Sleep(10);
}
}
private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
this.label1.Text = e.UserState.ToString();
this.label1.Update();
}
private void backgroundWorker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//
MessageBox.Show(" ");
}
}
}
C\#에서 backgroundWorker 류 의 용법 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 관련 C\#backgroundWorker 류 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.