代码之家  ›  专栏  ›  技术社区  ›  KyleGobel

在WPF应用程序中,在主窗口构造函数中的代码执行之后会发生什么?

  •  0
  • KyleGobel  · 技术社区  · 15 年前

    我想知道在构造函数执行完我的代码之后会发生什么,因为构造函数在冷启动时运行大约需要10秒,但是根据探查器,我的代码在大约2秒钟内就完成了执行。

    同时,在调试器中单步执行代码时,在构造函数的最后一行之后,我坐在那里等待7-8秒,然后窗口出现。为什么会这样?

    如果窗口正在加载内容或其他内容,为什么它不显示在屏幕上,在构造函数完成它的工作后是否完成加载?什么是阻碍?(或者我该如何理解)

    1 回复  |  直到 15 年前
        1
  •  1
  •   RandomEngy    15 年前

    一旦运行了构造函数,它就构建了窗口所需的所有UI元素。然而,它仍然需要做几件事:

    • 运行度量和布局过程以将UI元素放在正确的位置
    • 解析任何数据绑定值
    • 在窗口上加载、解码和调整图像大小
    • 进行实际渲染

    如果您的问题出现在渲染线程中(包括图像加载),您会看到一个没有响应的窗口“shell”,而不是根本没有窗口,所以我认为问题不存在。在我看来,获取数据绑定值或简单地使用复杂的布局需要很长时间。

    另一件要检查的事情是,看看你的CPU是否正在挂起,或者在那7-8秒内你是否经常碰到磁盘。可能会给你一些线索。