如何从BackgroundWorker线程中更新标签?

sof*_*fun 1 c# wpf xaml backgroundworker

当我使用WinForms时,我会在我的bg_DoWork方法中完成这个:

status.Invoke(new Action(() => { status.Content = e.ToString(); }));
status.Invoke(new Action(() => { status.Refresh(); }));
Run Code Online (Sandbox Code Playgroud)

但是在我的WPF应用程序中,我得到一个错误,Invoke说不存在Label.

任何帮助,将不胜感激.

Gra*_*ICA 8

使用已经内置的功能BackgroundWorker.当您"报告进度"时,它会将您的数据发送到ProgressChanged在UI线程上运行的事件.不需要打电话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();
}
Run Code Online (Sandbox Code Playgroud)

确保设置bgWorker.WorkerReportsProgress = true为启用报告进度.