BackgroundWorker에서 클래스 메서드를 실행하는 Windows 양식 응용 프로그램이 있습니다.진행률 변경 이벤트를 진행률 막대에 연결하는 방법
진행률을 표시하는 진행률 표시 줄 창을 추가하고 싶습니다. 나는 현재의 비율과 형태의 이벤트를
를 보낼 각 루프를 싶습니다 그래서 클래스 메소드의
은 내가 foreach 루프가있다.public partial class Form1 : Form
{
Parsser inst;
public Form1()
{
InitializeComponent();
inst = new Parsser();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;
}
private void button2_Click(object sender, EventArgs e)
{
if (this.textBox1 != null & this.textBox2 != null)
{
if (backgroundWorker1.IsBusy != true)
{
// Start the asynchronous operation.
backgroundWorker1.RunWorkerAsync();
}
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
inst.init(this.textBox1.Text, this.textBox2.Text);
inst.ParseTheFile();
System.Windows.Forms.MessageBox.Show("Parsing finish successfully");
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
}
}
}
`
을하고 수업 시간에 내가이 일 어떤 생각을 해달라고 몇 가지 이유에서 this-
public Parsser()
{
bgReports = new BackgroundWorker();
bgReports.WorkerReportsProgress = true;
}
public void ParseTheFile()
{
Lines = File.ReadAllLines(FilePath);
this.size = Lines.Length;
foreach (string line in Lines)
{
bgReports.ReportProgress(allreadtchecked/size);
을 수행
이 내가 무엇입니까?
내가 코드를 변경하고 난에 backgroundWorker1을 보내 파서 관측기. 파서 클래스에서 나는 bgReports.ReportProgress (allreadtchecked/size)를 호출한다. private void backgroundWorker1_ProgressChanged에 의해이 이벤트를 잡으려고 시도하지만 여전히 개인적인 무효로 가지 않는다 backgroundWorker1_ProgressChanged – MoShe
이 응답은 여전히 두 번째 BackgroundWorker 인 bgReports를 사용합니다.당신은 정말로 2 개의 수업을 공유해서는 안되며, 두 번째 작업자도 있어야합니다. –
그래서 대답은 무엇이되어야합니까? – MoShe