я получил консольное приложение, которое открывается модальное окно WPF в отдельном потоке аналогично этому примеру:WPF ShowDialog на тему: нужен диспетчер остановки?
http://reedcopsey.com/2011/11/28/launching-a-wpf-window-in-a-separate-thread-part-1/
// Create a thread
Thread newWindowThread = new Thread(new ThreadStart(() =>
{
// Create and show the Window
Window1 tempWindow = new Window1();
tempWindow.Show();
// Start the Dispatcher Processing
System.Windows.Threading.Dispatcher.Run();
}));
Но я использую ShowDialog вместо Show. Я вижу, что в этом случае мне не нужно запускать диспетчерскую нить. ShowDialog, похоже, делает это под гулом. Но как насчет отключения диспетчерской нитки? Должен ли я сделать это явно в этом случае, вызвав InvokeShutdown? Или делает метод close на дескрипторе окна уже?
К сожалению, мне нужно сделать это таким образом, так как мне приходится иметь дело с устаревшим приложением. В некоторых случаях это приложение должно показывать модальный диалог. Так что сейчас нет другого пути. – DanielG
Если вы должны поместить диалоги в устаревшее приложение, я бы подумал, используя [p-invoke] (http://stackoverflow.com/questions/3364681/message-box-in-front-of-all-windows-in-console -приложения) в [MessageBox] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505 (v = vs.85) .aspx) будет иметь минимальный размер. Вы не хотите слишком много использовать WPF-ify для своего устаревшего приложения. – MickyD
Это был мой первый подход. Не мое решение, но есть необходимость иметь другой стиль, который требует WPF. – DanielG