2013-07-18 30 views
0

我構建silverlight應用程序,我在內容加載前顯示進度條,我需要通過進度條几秒鐘,然後我需要關閉..如何使Silverlight頁面等待幾秒鐘

我正在使用system.threading.thread.sleep(1000),但它使UI凍結。

我需要在Silverlight替代其中它不應該凍結UI和過程應等待一段時間...

回答

1

默認情況下,一切都在UI線程上,所以任何耗時的任務會阻止用戶界面。爲了防止這種情況,執行推到後臺線程 - 這樣做的一個方法是Task.Factory

Task.Factory.StartNew(() => { 
    Thread.Sleep(1000); 
}); 

需要注意的是,如果你再想要做的任何UI(我想你會),然後你需要回到UI線程。 (如果後臺線程嘗試更改用戶界面,則運行時將引發異常。)通過使用Dispatcher

Task.Factory.StartNew(() => { 
    // sleep on a background thread 
    Thread.Sleep(1000); 

    // when complete, return to the UI thread to prevent access violation 
    Application.Current.Dispatcher.BeginInvoke(() => { 

     // do UI stuff here 
    }); 
});