none
WPF中打开窗体假死问题? RRS feed

  • 问题

  • 我有2个WPF窗体FORM1和FORM2,和一个HelpHanlder类

    FORM1中加载一个耗时操作,首次加载的时间会很久,做任何异步加载处理.

    FORM2执行一个事件打开FORM1。

    HelpHanlder类,里面有一个方法是用来Show这个Form1的。

    我现在 在FORM2中执行一个事件,实例化HelpHandler类,调用ShowForm1这个方法,打开FORM1这个窗口。

    现在我遇到的问题是,即使我在FORM2中采用异步,页面还是会处于假死状态,我该怎么办才能解决这个问题呢?

    2012年6月14日 2:08

答案

  • 即使你的Form2采用异步去处理HelpHandler,但是UI 线程只有一个,Form1的复杂耗时操作还是在UI线程上运行。

    所以你要做的是将Form1的耗时操作放入后台线程 处理,空出UI线程。

    还有,让我看看具体代码,光说不看我也无法确定问题是否如我所想。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月14日 10:05
    版主
  • 如果在UI线程中打开新的窗口, 还是会阻塞UI线程, 可以尝试在一个新线程中打开Form1

    2012年6月14日 14:51

全部回复

  • 即使你的Form2采用异步去处理HelpHandler,但是UI 线程只有一个,Form1的复杂耗时操作还是在UI线程上运行。

    所以你要做的是将Form1的耗时操作放入后台线程 处理,空出UI线程。

    还有,让我看看具体代码,光说不看我也无法确定问题是否如我所想。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月14日 10:05
    版主
  • 如果在UI线程中打开新的窗口, 还是会阻塞UI线程, 可以尝试在一个新线程中打开Form1

    2012年6月14日 14:51