Ниже приведен пример кода, для этого используется devexpress bareditItem (progressbar), чтобы показать прогресс при загрузке данных. Я хотел бы знать, есть ли способ показать тот же индикатор выполнения (показать прогресс при загрузке данных) с помощью async wait и task.Фоновый работник для async ждут задачи
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ProgressBar {
public partial class Form1 : DevExpress.XtraEditors.XtraForm {
DataTable workTable;
public Form1() {
InitializeComponent();
workTable = new DataTable("Records");
workTable.Columns.Add("Id", typeof(int));
workTable.Columns.Add("Data", typeof(String));
}
//this data varies from 0 to 50,000 rows
private void LoadData(DoWorkEventArgs e) {
for(int i = 0; i < 1001; i++) {
System.Threading.Thread.Sleep(5);
workTable.Rows.Add(i, String.Format("Record {0}", i));
this.backgroundWorker1.ReportProgress(i, i);
}
}
private void button1_Click(object sender, EventArgs e) {
this.backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
LoadData(e);
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) {
DataTable up = workTable.Clone();
this.barEditItem1.EditValue = e.ProgressPercentage;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
gridControl1.DataSource = workTable;
}
}
}
BackgroundWorker не устарел. – LarsTech
@LarsTech Не рекомендуется использовать после выхода async-ожидания. – user3185569