Как открыть и обновить окно WPF с помощью потоков - PullRequest
0 голосов
/ 22 июня 2010

У меня есть два окна WPF Window1.xaml и window2.xaml.В window2.xaml.cs у меня есть одна функция, которая выполняет сложные вычисления и отображает промежуточные результаты в TextBlock.

Теперь, что я хочу.нажав на кнопку Window1.xaml, я хочу открыть Window2.xaml в качестве диалогового окна и хочу выполнить сложную функцию windows2.xaml.

Если я вызываю сложную кнопку в Window2.xaml 'событие загрузки, тогда dilogокно появляется после выполнения сложной функции.

Как это сделать с помощью Threading.

Ответы [ 2 ]

1 голос
/ 22 июня 2010

Вам не нужно открывать окно в потоке. Открыв Window2, запустите поток для сложной функции в обработчике события Window2.Loaded. Это оставит ваш пользовательский интерфейс без помех.

0 голосов
/ 22 июня 2010

Открытие окна в потоке, не являющемся потоком пользовательского интерфейса, вообще не рекомендуется.Вы можете открыть всплывающее окно, используя Show() (немодальный) метод или ShowDialog() (модальный) метод.В методе загрузки Window2 вы можете запустить новый поток, который выполняет сложную операцию, и после выполнения этой операции он может показать диалоговое окно.

Теперь, если вы в потоке, отличном от потока пользовательского интерфейса, если выЧтобы показать любой пользовательский интерфейс (диалоги, окна) или изменить существующий пользовательский интерфейс (текстовый блок и т. д.), необходимо использовать метод Dispatcher.Invoke.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...