2010-03-08 54 views
1

我有一個需要幾秒鐘加載的用戶控件。有沒有辦法在表單加載時預加載控件?預加載用戶控件

+0

您是否在運行時實例化並將此用戶控件添加到窗體? – 2010-03-08 16:28:43

回答

0

不要在UserControl的構造函數或Load事件中做一堆工作,而是在工作線程中執行它。 BackgroundWorker對此很有幫助。這將使您可以快速啓動表單,但不一定能快速獲得用戶界面。考慮一個啓動畫面。

+0

我喜歡閃屏的想法。可用性比慢一點的應用加載時間更可接受。感謝閃屏的想法,我從來沒有想過它。 – 2010-03-08 17:26:15

0

您是否擁有UserControl的源代碼?如果是這樣,我會開始嘗試優化UserControl。聽起來像UC在啓動時創建了太多的UI對象。預加載不會隨時爲您節省。 WinForms UI是單線程的,因此幾秒鐘的加載時間將被移動到應用程序的啓動。我不知道你是否創建了UC的多個實例。如果是這樣,您可能可以重複使用單個實例來避免創建費用。

+0

我有權訪問源,並且只使用它的一個實例。說實話,將控件的加載時間移至應用程序啓動時間是可以接受的答案。然後,我會使用啓動屏幕,如「加載組件」或類似的東西,如nobugz建議的那樣。 – 2010-03-08 17:25:56

0

首先,使用分析器確定實際造成放緩的因素。然後,如果合適,您可以嘗試優化代碼以使其更快(達到可接受的水平),或者將獨立代碼(如數據訪問)重構爲獨立點,以便可以執行它與用戶控件加載異步。這就是你可以做的所有事情,因爲用戶控件必須與UI相同的線程加載。

+0

在這個階段沒有數據訪問這個控件。在用戶按下「填充」按鈕之前,它只有幾個標籤和一個文本框,它們具有空的文本字段。我將會看到什麼會放慢速度,但是一定會晚一點,因爲我有最後期限,必須完成'功能'。 – 2010-03-08 17:31:22