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.