检测窗体何时初始化并完全涂漆

时间:2014-11-28 10:57:17

标签: c# winforms performance events system.diagnostics

我正在寻求一种快速而肮脏的方法来衡量一组winforms的UI性能。我的想法是将System.Diagnostic定时调用放入代码库,并检测从请求页面到完全绘制并可供用户使用的时间。这甚至可能吗?是否有一个我可以挂钩的初始事件和一个我可以在表单完全挂钩的事件?绘。我知道有一个Paint事件,但这是表单开始绘制的时候,但这对我没有帮助。

我是一名处理某些Windows窗体的Web开发人员,因此这是一个显而易见的问题。

1 个答案:

答案 0 :(得分:1)

您可以在执行Stopwatch的构造函数之前或构造函数的第一行之前准确启动Form

在构造函数之前启动Stopwatch是一个好主意,因为当你在构造函数中启动它时,已经基类构造函数已经完成运行,所以如果你决定将你排除那些时间在构造函数的第一行开始。

然后停止Stopwatch事件中的Form.Shown。当表单完全显示给用户时,它将被引发。

然后使用Stopwatch.Elapsed来读取表单加载所需的时间。

正如@HansPassant在评论中指出的那样,您可能需要在this.Update();事件处理程序中添加Shown,以便我们可以确保所有子项都已完全绘制。