이상하게 행동하는 것처럼 보이는 아래 메서드가 있습니다. ProgressChanged
과 RunWorkerCompleted
은 동시에 업데이트되는 것으로 보입니다. 텍스트 블록을 업데이트하는 RunWorkerCompleted
코드를 주석 처리하면 데이터가 전송 된 후 ProgressChanged
이 적용됩니다. 여기서 내가 뭘 잘못하고 있니? 분명히 텍스트 블록에 데이터를 가져 왔음을 표시하고 데이터를 가져온 후에 변경합니다.WPF BackGroundWorker 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();
}
나는 그것을 시도했지만 아무런 예외도 던지지 않고있다. Incidentaly, 나는 "InvokeRequired"TextBlock 클래스의 속성으로 볼 수 없습니다. 이것에 밤새도록 위로 인 후에 나는 나가 다만 생활을 얻을 수있다 그래야 똑 바른 dispatchers를 이용하고 발동한다 잘 생각한다. –