如何衡量WinForms的响应能力和加载时间

如何衡量WinForms的响应能力和加载时间,winforms,Winforms,需要在.net windows应用程序中添加对windows窗体的响应性和加载时间的度量 测量winform响应和加载时间的正确方法是什么 我不确定如何衡量响应性,但对于加载时间,可以记录加载表单时引发的连续事件的延迟毫秒数。根据MSDN,我们了解到引发的事件(顺序)为: Control.HandleCreated Control.BindingContextChanged 形式.加载 控件。可见更改 形式。激活 表格。如图所示 您可以在表单的构造函数中连接这些事件,并使用一个简单的Log方

需要在.net windows应用程序中添加对windows窗体的响应性和加载时间的度量


测量winform响应和加载时间的正确方法是什么

我不确定如何衡量响应性,但对于加载时间,可以记录加载表单时引发的连续事件的延迟毫秒数。根据MSDN,我们了解到引发的事件(顺序)为:

  • Control.HandleCreated
  • Control.BindingContextChanged
  • 形式.加载
  • 控件。可见更改
  • 形式。激活
  • 表格。如图所示
您可以在表单的构造函数中连接这些事件,并使用一个简单的
Log
方法来处理数据收集。请注意,收集数据也需要时间

public partial class Form1 : Form
{
    Stopwatch timing = new Stopwatch();

    // naive data collection
    void Log(string stage)
    {
        Trace.WriteLine(String.Format("{0} = {1}", timing.ElapsedMilliseconds, stage));
    }

    public Form1()
    {
        timing.Start();
        Log("Constructor Start");
        InitializeComponent();  // adding all designer generated stuff
        Log("Constructor - Initialized");
        // hookup events
        this.HandleCreated += (s, e) => Log("HandleCreated");
        this.BindingContextChanged += (s,e)=> Log("BindingContextChanged");
        this.Load += (s, e) => Log("Load");
        this.Activated += (s, e) => Log("Activated");
        this.Shown += (s, e) => Log("Shown"); ;
        Log("Constructor End");
    }
}
在调试中使用.Net 4.0的笔记本电脑上,计时如下:

0=构造函数开始
19=构造函数-已初始化
20=构造函数结束
22=已创建把手
24=BindingContextChanged
25=负载
30=已激活
31=显示


System.Diagnostics.Stopwatch类为此提供了良好的功能。。这是真的,但在您的回答中并没有回答以下问题:为了测量windows应用程序的响应时间,我需要跟踪哪些事件。