无法从backgroundWorker1.ReportProgress正确地更新列表框

本文关键字:更新 列表 正确地 ReportProgress backgroundWorker1 | 更新日期: 2023-09-27 18:10:45

尝试从backgroundWorker1_ProgressChanged更新列表框,但当backgroundWorker1_DoWork完成其过程时,它会这样做。我想在backgroundWorker1_DoWork还在执行之前更新列表框,而它会定期调用backgroundWorker1.ReportProgress并更新列表框。

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    // loops
    backgroundWorker1.ReportProgress(1, list);// sending list to listbox
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    dynamic a = e.UserState;
    BeginInvoke((MethodInvoker)delegate
              { listbox1.Items.Add(a[0]); });
    // updates after backgroundWorker1_DoWork is executed?
}

无法从backgroundWorker1.ReportProgress正确地更新列表框

答案:请添加延迟

private void OnDataReceived(object sender, DataReceivedEventArgs e) {
  if (!String.IsNullOrEmpty(e.Data)) {
    backgroundWorker1.ReportProgress(1, e.Data);
    System.Threading.Thread.Sleep(300);
  }
}