assíncrono não espera
Tentei encontrar algo semelhante e leia todas as respostas dadas, mas não consegui encontrar algo que me explicasse isso.
Aqui está um código de exemplo para abrir um pop-up de diálogo (WPF). Desejo que, após o ShowOverlayView se transformar em True, a interface do usuário esteja acessível (é por isso que o async-waitit) e o programa aguardem até que termine quando o usuário clicar em "Fechar".
Esclarecimento pequeno: ShowOverlayViewModel define um booleano como true / false para a propriedade Visibility de um ContentControl. Como esse é o caso, não tenho mais o que esperar "da maneira regular".
Atualmente, quando a visualização está sendo "visível", o MessageBox é imediatamente exibido. Parece que não espera pelo AutoResetEvent.
Pequena atualização: Parece ser relevante específico para o MessageBox. Tentei alterar a propriedade Message após a linha de código de espera e ocorreu apenas após o are.Set (). Eu ainda adoraria saber por que a MessageBox agiu dessa maneira.
private void CommandAction()
{
ShowOptionsDialog();
MessageBox.Show("");
}
private async void ShowOptionsDialog()
{
var are = new AutoResetEvent(false);
var viewmodel = new DialogPopupViewModel();
viewmodel.Intialize("some title", "some message", DialogPopupViewModel.YesNoCancelButtons);
SetOverlayViewModel(viewmodel);
viewmodel.SetCloseViewAction(() =>
{
HideOverlayView();
are.Set();
});
ShowOverlayView = true;
await Task.Factory.StartNew(() =>
{
are.WaitOne();
//return viewmodel.DialogResult;
});
//return DialogResultEnum.Cancel;
}
Obrigado pela ajuda