2012-10-02 21 views
5

Estoy intentando cerrar un MessageDialog en mi aplicación WinRT. Me he dado cuenta si intento mostrar dos cuadros de diálogo de mensaje a la vez, obtengo una Access Access no autorizada. Para evitar esto, quiero cerrar el diálogo de mensaje existente si está abierto. Lo uso para mostrar el cuadro de diálogo:Cómo cerrar Message Dialog programmatically

MessageDialog md = new MessageDialog(" "); 

    private void MessageBox(string s) 
    { 
     Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
     { 
      md.Content = s; 
      //CLOSE HERE 
      md.ShowAsync(); 
     } 
     ); 
    } 

¿Cómo puedo cerrarlo?

+1

realmente debería hacer el asíncrono función MessageBox y "esperan "la llamada RunAsync dentro de ella. Eso es arquitectónicamente más limpio y le permite detectar cualquier error que ocurra durante la llamada a RunAsync. –

+0

¿Por qué mostraría dos cuadros de mensaje? Quizás no te quieran hacer. ¿Qué quieres hacer? –

+1

Este método es un método genérico que utilizo para mostrar recuadros de mensajes y podría llamarse dos veces. – msbg

Respuesta

6

en lugar de tratar de encontrar la manera de cerrarlo, intente esto declare una variable de instancia para AsyncCommand;

AsyncCommand command; 

command = md.ShowAsync(); 

entonces en su CommandHandler, antes de ejecutar su cheque método si el comando es nulo

if(command!=null) 
{ 
command.Cancel(); 
} 

// hacer cosas/TryAgain bloquear

+0

¿Hay una solución como esta en WinJS en lugar de C#? – ariestav

+0

eche un vistazo al fragmento de código aquí. http://msdn.microsoft.com/library/windows/apps/BR208674?cs-save-lang=1&cs-lang=javascript#code-snippet-1 – Syler