2014-10-03 26 views
1

我正在WPF上寫一個項目。 在顯示主窗口之前,我必須先從DB查詢一些數據,然後根據數據,我會在後面的代碼的主窗口上繪製一些用戶控件。 處理需要大約3 - 5秒。所以當第一次啓動mainwindows時,它會顯示爲白色屏幕。 3 - 5秒後,窗口將完全顯示。請幫我介紹一下WPF的線程

我想問一下,是否有顯示等待視圖並在另一個線程中執行繪圖用戶控件。完成後,然後加載主窗口。

請幫幫我。提前致謝 :)。

+0

BackgoundWorker或優先級綁定或飛濺。 – Paparazzi 2014-10-03 17:46:05

回答

0

您需要卸載UI線程。您可以使用TPLBackgroundWorker。我建議您使用TPLasync-await,因爲它更容易,代碼更清晰。

private QueryResult QueryDatabase() 
{ 
    // Here's your db access code 
    return result; 
} 

private Task<QueryResult> QueryDatabaseAsync() 
{ 
    // This code will be queued to ThreadPool 
    return Task.Run(QueryDatabase); 
} 

private async void LoadedHandler(...) 
{ 
    IsProgressVisible = true; 

    Items = await QueryDatabaseAsync(); 

    IsProgressVisible = false; 
}