|
分類:[VB.NET/VB2005 以降]
開発したアプリケーションについて、画面の描画処理の性能を測定したところ、
描画処理をNew()メソッドに実装した場合と、Form.Load()メソッドに
実装した場合で、性能が大きく変わるという事象が発生しました。
上記の画面の描画処理とは、フォームに貼り付けた帳票ソフトのActiveXコントロールに対して
、文字の装飾をおこなうというような内容です。
ユーザが画面を開く前に描画を完了する必要があるので、New()メソッドに実装しておりました。
以下ソースのイメージです。
------------------------------------------------------------------------------------------------------------
Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.帳票ソフトの描画処理()
End Sub
------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
Private Sub New()
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
Me.帳票ソフトの描画処理()
End Sub
------------------------------------------------------------------------------------------------------------
*「帳票ソフトの描画処理()」については、ActiveX側で用意されている関数を使用して
行っていますので、掲載はご了承ください。
本処理について、New()で実装した場合の方が性能的に約4倍ほど悪くなりました。
そこで以下が質問の内容となります。
・フォームに配置したコントロールに対する描画処理(文字装飾等)は、本来どちらでおこなうべきか。
・New()で処理をした場合に遅くなる原因はなにか。
なお、本事象については、以下の条件がすべて成立している場合にのみ発生しています。
・WindowsXP(Windows2000,WindowsVistaでは発生しませんでした)
・コントロールをTableLayoutPanel内に配置した場合(TableLayoutPanel内にいれなければ発生しませんでした)
|