#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. грустно, что это не сработает так, как я хотел, но все равно спасибо 🙂