表单InitializeComponent需要很长时间才能开始

时间:2013-04-12 10:48:22

标签: .net winforms optimization

前段时间我的应用程序已经开始花费很长时间来显示主窗口。我在表单构造函数中放置了System.Diagnostics.Profiler,如下所示:

Private m_profiler As New System.Diagnostics.Stopwatch
Public Sub New()
  ' This call is required by the designer.
  m_profiler.Restart()
  InitializeComponent()
  m_profiler.Stop()
  Rhino.RhinoApp.WriteLine("InitializeComponent() took {0}ms", m_profiler.ElapsedMilliseconds)

  ' Add any initialization after the InitializeComponent() call.
End Sub

<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
  Rhino.RhinoApp.WriteLine("InitializeComponent() init took {0}ms", m_profiler.ElapsedMilliseconds)

  Me.components = New System.ComponentModel.Container()
  .....yada yada yada

结果是:

InitializeComponent() init took 2572ms
InitializeComponent() took 2837ms

所以几乎所有的时间都花在调用InitializeComponent()方法上,我认为是因为jitting。我能做些什么来加速主表格的展示吗?

在没有任何控件的情况下显示表单是否有意义,将这些控件加载到后台线程中以便编译然后在UI线程上实例化新控件并将它们添加到表单中?

我能做些什么来找出真正占用的东西吗?

我的应用程序是一个纯.NET插件,用于显示.NET SDK的非托管C ++桌面应用程序。它目前在Windows 7上作为64位应用程序运行。

0 个答案:

没有答案