2012-10-02 17 views
5

Sto tentando di chiudere una MessageDialog nella mia app WinRT. Ho notato che se provo a mostrare due finestre di dialogo di messaggi contemporaneamente, ottengo un oggetto UnauthorizedAccessException. Per evitare ciò, voglio chiudere la finestra di dialogo dei messaggi esistenti se è aperta. Lo uso per mostrare la finestra di dialogo:Come chiudere la finestra di dialogo dei messaggi a livello di programmazione

MessageDialog md = new MessageDialog(" "); 

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

Come si chiude?

+1

si dovrebbe davvero fare la funzione MessageBox asincrono e "attendono "la chiamata RunAsync al suo interno. Ciò è architettonicamente più pulito e consente di rilevare eventuali errori che si verificano durante la chiamata a RunAsync. –

+0

Perché dovresti mostrare due finestre di messaggio? Forse non ti vogliono fare. Che cosa vuoi fare? –

+1

Questo metodo è un metodo generico che utilizzo per mostrare le finestre di messaggio e potrebbe essere chiamato due volte. – msbg

risposta

6

invece di cercare un modo per chiuderlo, provare questo dichiarare una variabile di istanza per AsyncCommand;

AsyncCommand command; 

command = md.ShowAsync(); 

poi nella vostra commandhandler, prima di eseguire il metodo check se il comando è nullo

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

// fare cose/tryagain bloccare

+0

Esiste una soluzione come questa in WinJS anziché in C#? – ariestav

+0

dai uno sguardo allo snippet di codice qui. http://msdn.microsoft.com/library/windows/apps/BR208674?cs-save-lang=1&cs-lang=javascript#code-snippet-1 – Syler

Problemi correlati