C# C DevExpress-进度条在工作时立即填充
正如标题所说。第一次使用这个控件,所以我不确定发生了什么 我的超负荷C# C DevExpress-进度条在工作时立即填充,c#,devexpress,C#,Devexpress,正如标题所说。第一次使用这个控件,所以我不确定发生了什么 我的超负荷 bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); bw.ProgressChanged += new ProgressChangedEventHandler
bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.WorkerReportsProgress = true;
在我的按钮点击事件中
// Set props for progress bar
progressBarControl1.EditValue = 1;
progressBarControl1.Properties.Minimum = 0;
// cboTables names is a checkedListBox
progressBarControl1.Properties.Maximum = cboTableNames.CheckedItems.Count;
progressBarControl1.Properties.Step = 1;
// Start BW worker
bw.RunWorkerAsync();
嫁妆
protected void bw_DoWork(object sender, DoWorkEventArgs e)
{
int counter = 0;
if (cboTableNames.CheckedItems.Count != 0)
{
// Get selected items
foreach (string item in cboTableNames.CheckedItems)
{
// Pass off for archiving
_myIO.Archive(item, _sqlConn, bw); // I pass bw
}
}
else
{
// Catch if the user tries to submit without table name selection(s)
MessageBox.Show("You must select a table name to archive.");
}
}
现在的目标是在我循环检查每个已检查的项目时不填充进度条。但在我的IO文件中,我将项目提交到数据库。目标是反映插入的每个SQL事务的进度
// Encapsulated within a loop that is iterating through records and inserting values
//into the DB. #magic
// For progressbar
pgCounter++;
bw.ReportProgress(pgCounter);
现在奇怪的是,bw.RunWorkerAsync将我重定向到DoWork函数。发生的那一刻,我的进度条填满了100%。我错过了什么
另外,除了通常定义BackgroundWorker的地方,我还没有看到太多人从其他类调用.ReportProgress。任何关于正确使用方法的提示也将不胜感激。干杯。这不是最好的选择,但我通常只使用thread.sleep和add半秒,通常进程太快,进度条无法以我们想要的方式直观地工作,但我重复这不是最好的操作方法。@edrodriguez-上的一个变体?:-嘿,谢谢你的意见。尝试按您的建议添加thread.sleep,但无效。