【发布时间】:2010-10-25 16:03:23
【问题描述】:
我有一个后台工作人员正在运行一个长时间的数据库任务。我想在任务运行时显示进度条。不知何故,后台工作人员不会报告任务的进度。
这就是我所拥有的:
BackgroundWorker _bgwLoadClients;
_bgwLoadClients = new BackgroundWorker();
_bgwLoadClients.WorkerReportsProgress = true;
_bgwLoadClients.DoWork += new DoWorkEventHandler(_bgwLoadClients_DoWork);
_bgwLoadClients.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_bgwLoadClients_RunWorkerCompleted);
_bgwLoadClients.ProgressChanged += new ProgressChangedEventHandler(_bgwLoadClients_ProgressChanged);
_bgwLoadClients.RunWorkerAsync(parms);
private void _bgwLoadClients_DoWork(object sender, DoWorkEventArgs e)
{
DataTable dt = getdate();
e.Result = dt;
}
void _bgwLoadClients_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
我在 WPF 中这样做,但我想这不会有什么不同。
提前致谢
【问题讨论】:
-
如果您在输入(或编辑)问题时将代码缩进四个空格,它将像代码一样以缩进和格式显示,而不是混合成一个段落并且难以阅读。
-
您似乎没有调用 BackgroundWorker 的 .ReportProgress 方法 - 仅仅是因为您向我们展示了一些简化的代码吗?
-
@Mike,我认为这可能是原因而不是过度编辑示例。
-
我无法调用 ReportProgress 方法,因为我只在 Dowork 方法中做一件事和一件事。我可以在 getdate() 调用之前和之后放置一个 .ReportProgress,但是在调用 getdata() 时进度条永远不会前进..
-
如果你正在做的事情没有被分成几个步骤,它需要多长时间是确定性的吗?否则,您将无法报告除 0% 或 100% 之外的任何内容。您可能想要使用不确定的进度条。
标签: c# wpf backgroundworker progress