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

时间:2010-03-29 15:43:46

标签: wpf constructor

我想知道构造函数执行完代码后会发生什么,因为构造函数在冷启动时需要10秒才能运行,但根据分析器,我的代码在2秒钟内执行完毕。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

如果您的问题出现在渲染线程中(包括图像加载),您会看到一个没有响应的窗口“shell”而不是没有窗口,所以我认为问题不存在。有一些东西需要花费很长时间来获取数据绑定值或者只是有一个复杂的布局似乎可能会导致我。

要检查的另一件事是查看你的CPU是否正在挂钩,或者你是否在7-8秒内大量击中磁盘。可能会给你一些在哪里寻找的线索。