Tulpep PopupNotifier не появится, если поток, который он породил, все еще работает? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть приложение Windows Forms, использующее .NET 4.5.2, и я создаю PopupNotifier, который я создаю в коде:

PopupNotifier popup = new PopupNotifier();

popup.TitleText = "Title here";
popup.ContentText = "Content here";

popup.Popup();

Это всплывающее окно предназначено для предупреждения пользователя о «вехах» в ходе выполнения приложения, когда приложение вызывалось как запланированная задача без видимого графического интерфейса пользователя, который я скрываю с помощью следующего кода при загрузке формы:

BeginInvoke(new MethodInvoker(delegate {
    Hide();
}));

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

Я пробовал такие решения, как вызов всплывающего окна из потока пользовательского интерфейса формы, как это было предложено в этом ответе , но безуспешно. Можно ли вызвать строку или блок кода, чтобы всплывающее окно показывалось? Что-то вроде Application.DoEvents() (за исключением того, что вы знаете, что заставляет всплывающее окно показывать).

Спасибо за помощь!

...