Когда я показываю окно сообщения из асинхронного метода, z-порядок нового окна сообщения может быть неправильным, и пользователь может пропустить это поле.
Рассмотрим следующий код:
private async void btnShowMessage_Click(object sender, EventArgs e)
{
await Task.Delay(3000);
MessageBox.Show("Test");
}
Запустите это приложение, нажмите кнопку ShowMessage и активируйте другое окно.Когда сообщение отображается, оно может появиться в фоновом режиме.Поскольку он правильно блокирует взаимодействие с главным окном, пользователю кажется, что приложение зависает.
Я знаю, что этого можно избежать, явно указав владельца для Show()
-метода.В любом случае, мне было интересно, есть ли более общее решение этой проблемы (на самом деле я ожидал, что ExecutionContext
справится с этим).