2013-10-08 51 views
0

我正在尋找一種快速有效且快速顯示多個標籤的方法。除了一個接一個地替換標籤的所有.text屬性之外,做這件事的好方法是什麼?我的理解是,無論何時更新.text屬性,如果您有50個以上的控件需要更新,UI必須重新繪製,這將增加等待時間。顯示多個標籤的有效方法

我知道線程是一種選擇,但是當我嘗試這樣做時,我沒有看到太大的區別,因爲我無法一次加載2個標籤,我仍然必須等待UI線程才能使用標籤更新。還有哪些方法可以快速有效地加載50個以上的標籤?現在的方式需要很長時間(3-4秒),我覺得可以降低。這些信息是從後端系統獲取的,所以我沒有選擇數據集/等。

+0

能否請您發佈您的代碼?對於50個標籤,3-4s聽起來太慢了。 – varocarbas

+0

你是說後端需要3-4秒才能提供標籤的數據? –

+0

我無法發佈代碼,它實際上只是從後端抓取它的代碼。我不確定是否有辦法加快這個過程。如果是由於後端或代碼連接到後端,我可能無法控制它,只是嘗試了一些東西:) – Criel

回答

2

您必須將檢索數據的代碼(您使用後臺線程)和更新UI的代碼(應該儘快發生,因爲您不想阻止UI太長)。

我的建議是使用BackgroundWorker組件檢索所有50個標籤的數據。當BackgroundWorker引發RunWorkerCompleted事件時,您可以調用表單'SuspendLayout函數,更新標籤的所有值,然後致電ResumeLayout。 SuspendLayout會阻止控件重新繪製,直到您調用ResumeLayout。

更多信息:BackgroundWorkerSuspendLayoutResumeLayout

+0

我嘗試過實現這個方法,但遇到RunWorkerCompleted事件後應用程序崩潰時會出現一些問題。有沒有在Visual Studio中的任何地方崩潰的痕跡,我可以看到發生了什麼事情導致崩潰?這顯然是由於一些跨線程問題,但我不確定在哪裏 – Criel

+0

在RunWorkerCompleted事件中放置一個斷點並逐步執行代碼。 – ZippyV