【发布时间】:2010-05-31 09:57:58
【问题描述】:
我有下面的方法似乎表现得很奇怪。 ProgressChanged 和 RunWorkerCompleted 似乎在同时更新自己。如果我注释掉更新文本块的RunWorkerCompleted 代码,我会看到ProgressChanged 在数据传输后生效。我在这里做错了什么?我显然希望文本块显示我正在获取数据,然后在我完成获取数据后进行更改。
public void GetAppointmentsBackground()
{
System.Windows.Threading.Dispatcher webServiceDispatcher = this.Dispatcher;
worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += delegate(object sender, DoWorkEventArgs args)
{
GetAppointmentsForDayDelegate getAppt = new GetAppointmentsForDayDelegate(GetAppointmentsForDay);
webServiceDispatcher.BeginInvoke(getAppt);
(sender as BackgroundWorker).ReportProgress(25);
};
worker.ProgressChanged += delegate(object s, ProgressChangedEventArgs args)
{
txtMessages.Text = "Contacting Server";
};
worker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
{
txtMessages.Text = "Completed Successfully";
};
worker.RunWorkerAsync();
}
【问题讨论】:
标签: wpf backgroundworker