2013-01-14 38 views
0

現在,我面臨一個非常奇怪的問題。我們有一個.net解決方案。這是一個比較大的解決方案,其中包含大量項目。在一個負責GUI的項目中,我們在客戶端應用程序啓動之前使用VB.net創建了大量的winforms(標籤,按鈕,列表框等)。最近,客戶問我們爲什麼我們的客戶端應用需要更多時間來初始化。爲什麼「New System.Windows.Forms.Button」需要更多的時間在我的.net應用程序

當我深入我們的代碼時,發現只有一塊「Me.BtnMenu = New System.Windows.Forms.Button」子句需要大約10ms才能完成。實際上,在客戶端GUI初始化之前,我們需要構建數百個winform。最近,我們將我們的解決方案從vs2008遷移到vs2010。相比之下,在vs2008版本中,「New System.Windows.Forms.Button」的成本約爲0〜1ms,而在vs2010版本中,「New System.Windows.Forms.Button」的成本約爲10〜 20ms,這最終會延遲GUI的初始化。更有趣的是,像GroupBox,Panel,RadioButton等其他控件在這兩個版本中都不花費太多時間,只有按鈕設置。

有沒有人對此有任何意見?它困擾了我好幾個星期,我仍然無法得到它。

+0

您可以嘗試測量在獨立的項目/解決方案中創建按鈕需要多長時間?只是爲了確定它是否是你的項目或機器中的其他東西可能會造成這種延遲。 –

+0

感謝您的回覆並提供建議。它變得越來越有趣,當我從我們的項目中分離出一個表單並將此表單導入新解決方案時,問題依然存在,甚至更糟。在我的原始項目/解決方案中,需要大約500ms來初始化所有這些控件,大約需要200ms。 似乎它與項目/解決方案的設置無關,例如已啓用優化。 –

+1

10-20毫秒是這些熟悉的數字之一。您可以在Windows上測量流逝時間的精確度。與代碼沒有任何關係。使用*真正的分析器*。 –

回答

0

它也可能是導致此問題的Button對象的父級。有時,如果面板/窗體在將新控件添加到其集合時重新計算/重新繪製佈局,那麼添加簡單按鈕等簡單操作會花費更多時間。如果您正在使用自定義面板或在添加/刪除控件時計算的佈局,請嘗試將表單元素直接添加到表單。

此外,檢查父窗體/面板是否有一個方法,可以暫停重繪窗體或停止佈局計算,例如, BeingUpdate/EndUpdate(或類似的)。

相關問題