1
我正在WPF上寫一個項目。 在顯示主窗口之前,我必須先從DB查詢一些數據,然後根據數據,我會在後面的代碼的主窗口上繪製一些用戶控件。 處理需要大約3 - 5秒。所以當第一次啓動mainwindows時,它會顯示爲白色屏幕。 3 - 5秒後,窗口將完全顯示。請幫我介紹一下WPF的線程
我想問一下,是否有顯示等待視圖並在另一個線程中執行繪圖用戶控件。完成後,然後加載主窗口。
請幫幫我。提前致謝 :)。
我正在WPF上寫一個項目。 在顯示主窗口之前,我必須先從DB查詢一些數據,然後根據數據,我會在後面的代碼的主窗口上繪製一些用戶控件。 處理需要大約3 - 5秒。所以當第一次啓動mainwindows時,它會顯示爲白色屏幕。 3 - 5秒後,窗口將完全顯示。請幫我介紹一下WPF的線程
我想問一下,是否有顯示等待視圖並在另一個線程中執行繪圖用戶控件。完成後,然後加載主窗口。
請幫幫我。提前致謝 :)。
您需要卸載UI線程。您可以使用TPL
或BackgroundWorker
。我建議您使用TPL
和async-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;
}
BackgoundWorker或優先級綁定或飛濺。 – Paparazzi 2014-10-03 17:46:05