0

在我的silverlight 4.0應用程序中,在用戶按下按鈕之後,我必須創建少量需要一些時間(5-10秒)的UI對象。在此期間,UI會凍結,當然。我決定將這些對象創建到後臺工作器中,以便用戶界面至少可以顯示進度條。在Ui線程外部創建UIElements,Silverlight

但是這種解決方案不起作用。要創建UI對象,你必須在UI線程中。 如果我把這些對象的創建放在Dispatcher.BeginInvoke()以內,我的UI就會凍結。在大多數情況下甚至沒有顯示進度條。有沒有解決的辦法?

Silverlight在後臺創建UI對象時可以顯示進度條嗎?

回答

0

看看這個論壇post。它可能有幫助。

而不是使用:

System.Windows.Threading.Dispatcher.BeginInvoke(() => {}); 

他們使用:

System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => {}); 
0

你可以試試裏面BeginInvoke()創建UI對象之前顯示的自定義消息。

實施例:

private void CreateObjects() 
{ 
    myMsg.Text = "Loading..."; 
    Dispatcher.BeginInvoke(() => { AddObjects() }); 
} 

一旦創建的所有對象,禁用消息。

您也可以使用Progress Bar嘗試類似的事情。

+0

是的,但要顯示myMsg你需要訪問UIThread,如果對象是在同一個線程上創建的Ui沒有時間去更新 – grabah 2012-07-24 08:41:47

+0

我在這裏想說的是用Progress Bar而不是Progress Bar來顯示消息,更新正在進行中。 Officourse你需要在UIThread中做到這一點。順便說一句,你嘗試過嗎? – Vivek 2012-07-25 11:25:32