В моем главном окне у меня есть кнопка, которая генерирует отчет. Но для создания требуется около 15 секунд, поэтому я просто хочу поставить небольшой диалог, который просит пользователя «Подождите». Затем он просто исчезает, когда активируется окно отчета. Нижеследующее работает, за исключением того, что в диалоговом окне «Подождите» создается оболочка окна, нет содержимого. Вот код:C# WPF Попытка установить диалоговое окно «Подождите»
WD_PleaseWaitDialog _pWait = null;
private void ReportButton_Click(object sender, RoutedEventArgs e)
{
_pWait = new WD_PleaseWaitDialog();
_pWait.Show();
ReportWindow reportWindow = new ReportWindow(); // takes 15 seconds to execute
reportWindow.Activated += closePleaseWaitWindow;
reportWindow.Show();
}
private void closePleaseWaitWindow(object sender, System.EventArgs e)
{
_pWait.Close();
}
Это не решает проблему, так как все, что вы здесь делаете, вызывает основной поток из основного потока ... (что само по себе нечетно). Перенос 'WD_PleaseWaitDialog' будет по-прежнему блокироваться длительной операцией в' ReportWindow'. –
Проблема в том, что waitdialog не отображается. Это решает проблему, потому что она начнет длительный процесс после рендеринга waitdialog. – Liero
Нет, он не сказал, что диалог не отображается. Он сказал, что содержимое диалогового окна не отображается. Это совершенно разные вещи.Ваш код делает не что иное, как если бы он просто создал экземпляр диалогового окна и 'Show()' it, что он и сделал. Вы даже знаете, что делает 'Dispatcher.BeginInvoke()' делает? Это не так. –