When I used WinForms, I would have done this in my bg_DoWork
method:
status.Invoke(new Action(() => { status.Content = e.ToString(); }));
sta
Use the capabilities already built into the BackgroundWorker
. When you "report progress", it sends your data to the ProgressChanged
event, which runs on the UI thread. No need to call Invoke()
.
private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
bgWorker.ReportProgress(0, "Some message to display.");
}
private void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
status.Content = e.UserState.ToString();
}
Make sure you set bgWorker.WorkerReportsProgress = true
to enable reporting progress.