WPF — Открыть окно сообщения, пока открыто другое окно сообщения

#wpf #async-await #task #messagebox

#wpf #асинхронный-ожидание #задача #messagebox

Вопрос:

Привет, я тестирую некоторые вещи для своей программы, каждый раз, когда тест завершен, должно отображаться новое окно сообщения. Проблема в том, что только новое окно сообщения откроется после того, как я закрыл окно сообщения до этого. Я попытался поместить окно сообщения в новую задачу, но это тоже не сработало…

 Task.Run(() => System.Windows.MessageBox.Show(
                dirs[directory]   " is done, it took "   stopwatch.Elapsed,
                "Done with "   dirs[directory],
                System.Windows.MessageBoxButton.OK,
                System.Windows.MessageBoxImage.Information,
                System.Windows.MessageBoxResult.OK,
                System.Windows.MessageBoxOptions.ServiceNotification));
 

Я также попытался сделать метод асинхронным и await Task.Run, но там тоже не повезло

  await Task.Run(() => System.Windows.MessageBox.Show(
                dirs[directory]   " is done, it took "   stopwatch.Elapsed,
                "Done with "   dirs[directory],
                System.Windows.MessageBoxButton.OK,
                System.Windows.MessageBoxImage.Information,
                System.Windows.MessageBoxResult.OK,
                System.Windows.MessageBoxOptions.ServiceNotification));
 

Ответ №1:

MessageBox.Show вызывает Функция MessageBox (winuser.h).

В комментариях вы можете прочитать:

Если вы создаете окно сообщения во время присутствия диалогового окна, используйте дескриптор диалогового окна в качестве hWnd параметра. hWnd Параметр не должен идентифицировать дочернее окно, например элемент управления в диалоговом окне.

Но вы не можете получить hWnd из окна сообщения.

Для этого лучше создать пользовательское окно.

Комментарии:

1. грустно, что это не сработает так, как я хотел, но все равно спасибо 🙂