0

今、私は非常に奇妙な問題に直面しています。.net ソリューションがあります。これは、多くのプロジェクトを含む比較的大きなソリューションです。GUI を担当する 1 つのプロジェクトでは、クライアント アプリを開始する前に、VB.net で多くの winforms (ラベル、ボタン、リスト ボックスなど) を作成します。最近、顧客から、クライアント アプリの初期化に時間がかかる理由について尋ねられました。

コードを掘り下げると、"Me.BtnMenu = New System.Windows.Forms.Button" 句の 1 つの部分だけが完了するのに約 10 ミリ秒かかることがわかりました。実際、クライアント GUI を初期化する前に、何百もの winform を構築する必要があります。最近、ソリューションを vs2008 から vs2010 に移行しました。比較すると、vs2008版では「New System.Windows.Forms.Button」のコストは約0~1msですが、vs2010版では「New System.Windows.Forms.Button」のコストは約10~1msです。 20 ミリ秒、最終的に GUI の初期化を遅らせます。さらに興味深いのは、GroupBox、Panel、RadioButton などの他のコントロールは、両方のバージョンでそれほど時間はかからず、ボタンのみです。

誰でもこれについて何か考えがありますか? それは何週間も私を困惑させます、そして私はまだそれを得ることができません.

4

1 に答える 1

0

この問題を引き起こしている Button オブジェクトの親である可能性もあります。新しいコントロールがコレクションに追加されたときにパネル/フォームがレイア​​ウトを再計算/再描画している場合、単純なボタンの追加などの単純な操作に時間がかかることがあります。コントロールの追加/削除時に計算されるカスタム パネルまたはレイアウトを使用している場合は、フォーム要素をフォームに直接追加してみてください。

親フォーム/パネルに、フォームの再描画を一時停止したり、レイアウトの計算を停止したりするメソッド (BeingUpdate/EndUpdate (または類似のもの) など) があるかどうかも確認してください。

于 2013-01-15T00:08:34.767 に答える