从“外部”方法后台工作程序(MVVM C#app)更新ShowMessageAsync(MahApps)值

时间:2016-04-25 13:41:28

标签: c# wpf mvvm backgroundworker mahapps.metro

在我的方法" sendconfig_dowork(object sender,DoWorkEventArgs e)"我喜欢在完成时向用户显示窗口。

当方法是"不是外部"我这样定义并且工作正常:

var window = System.Windows.Application.Current.Windows.OfType<MetroWindow>().FirstOrDefault();
                if (window != null)
                    await window.ShowMessageAsync(@"Operation successed", @"Operation successed");

但这不适用于&#34;外部&#34;像背景工人的方法。我无法弄清楚我应该如何定义内部背景工作者的工作方式?或者如何定义它的最佳方式?

程序是用C#WPF和MVVM编写的。谢谢!如有任何问题,请询问。

1 个答案:

答案 0 :(得分:0)

您必须在UI线程中调用ShowMessageAsync。例如。如果您的目标是.NET Framework 4.5,则可以使用应用程序的调度程序:

var window = System.Windows.Application.Current.Windows.OfType<MetroWindow>().FirstOrDefault();
if (window != null) {
    Application.Current.Dispatcher.InvokeAsync(() => window.ShowMessageAsync(@"Operation successed", @"Operation successed");
}