2016-04-25 6 views
0

В моем методе «sendconfig_dowork (отправитель объекта DoWorkEventArgs e)» Мне нравится показывать пользователю также окно, когда оно завершено.Обновление ShowMessageAsync (MahApps) Значение из «внешнего» метода Справочный работник (приложение MVVM C#)

Когда метод «не внешнее» я определен так и работает отлично:

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

Но это не работает в «Внешний» Метод как фон рабочего. У меня возникли проблемы с выяснением того, как я должен определять, что будет работать работником, занимающимся инсайдерским фоном? Или как наилучшим образом определить это?

Программа написана на C# WPF и MVVM политического. Благодаря! Если у вас возникли вопросы, спросите пожалуйста.

ответ

0

Вы должны вызвать 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"); 
}