0

少し前に、アプリがメイン ウィンドウを表示するのに時間がかかり始めました。System.Diagnostics.Profiler次のように、フォームコンストラクターに a を入れました。

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()メソッドを呼び出すだけで費やされます。これは、ジッティングが原因であると思います。メイン フォームの表示を高速化するためにできることはありますか?

コントロールなしでフォームを表示し、それらのコントロールをバックグラウンド スレッドにロードしてコンパイルし、UI スレッドで新しいコントロールをインスタンス化してフォームに追加することは理にかなっていますか?

この間、何が実際に何を占めているのかを知るために私にできることはありますか?

私のアプリは、.NET SDK を公開するアンマネージ C++ デスクトップ アプリケーションへの純粋な .NET プラグインです。現在、Windows 7 で 64 ビット アプリケーションとして実行されています。

4

0 に答える 0