2013-03-28 3 views
1

Я разрабатываю приложение на Windows Phone 8, я хочу спросить, есть ли способы получить результат из MessageBox.Show, пока MessageBox завернут в Deployment.Current.Dispatcher.BeginInvoke? например:Как получить результат от Deployment.Current.Dispatcher.BeginInvoke?

Deployment.Current.Dispatcher.BeginInvoke(() => 
      { 
       MessageBox.Show(message, title, MessageBoxButton.OKCancel); 
      }); 

Я хочу получить выбор пользователя, что мне делать? Большое спасибо!

ответ

4

Лучший способ сделать это состоит в использовании обратного вызова, которая проходит вдоль результате

Deployment.Current.Dispatcher.BeginInvoke(() => { 
    var result = MessageBox.Show(message, title, MessageBoxButton.OKCancel); 
    OnMessageBoxComplete(result); 
}); 

void OnMessageBoxComplete(MessageBoxResult result) { 
    ... 
} 
+0

Благодаря JaredPar. Я использовал SycnInvokeHelper, чтобы преобразовать это в вызов синхронизации. – codewarrior

+0

внутренний класс SyncInvokeHelper { общественного недействительными Invoke() { если (this.dispatcher.CheckAccess() == TRUE) { this.Execute(); } else { this.dispatcher.BeginInvoke (новый ExecuteBody (this.Execute)); } } private void Execute() { это.Result = this.execBody.DynamicInvoke (args); если (это. Завершено! = Null) { это. Завершено (это); } } } – codewarrior

Смежные вопросы