如何通过线程打开和更新WPF窗口

时间:2010-06-22 10:59:00

标签: wpf multithreading window

我有两个WPF窗口Window1.xaml和window2.xaml。 在window2.xaml.cs中,我有一个函数可以进行一些复杂的计算并在TextBlock上显示中间结果。

现在我想要什么。 通过单击Window1.xaml的按钮,我想打开Window2.xaml作为对话框,并希望执行windows2.xaml的复杂功能。

如果我在Window2.xaml'加载事件上调用复杂按钮,则在执行复杂功能后稀释框apear。

如何通过线程执行此操作。

2 个答案:

答案 0 :(得分:1)

您无需在线程中打开窗口。打开Window2后,在Window2.Loaded事件处理程序中为复杂函数启动一个线程。这将使您的UI不受干扰。

答案 1 :(得分:0)

根本不建议在不是UI线程的线程中打开窗口。您可以使用Show()(无模式)方法或ShowDialog()(模态)方法打开弹出窗口。在Window2的加载方法中,您可以启动一个执行复杂操作的新线程,一旦完成该操作,它就会显示一个对话框。

现在,在与线程不同的线程中,如果要显示任何UI(对话框,窗口)或更改现有UI(文本块等),则必须使用Dispatcher.Invoke方法。