我正在撰写一份关于WPF的项目。在显示主窗口之前,我必须从数据库中查询一些数据,然后根据这些数据,在代码后台上绘制一些用户控件。 这个过程需要大约3-5秒钟。因此,在第一次启动主窗口时,它将以空白屏幕的形式显示。经过3-5秒钟后,窗口将完全显示。
我想问一下,是否有办法显示等待视图并在另一个线程中绘制用户控件。完成后,再完全加载主窗口。
请帮忙解决这个问题。提前感谢:)。
我正在撰写一份关于WPF的项目。在显示主窗口之前,我必须从数据库中查询一些数据,然后根据这些数据,在代码后台上绘制一些用户控件。 这个过程需要大约3-5秒钟。因此,在第一次启动主窗口时,它将以空白屏幕的形式显示。经过3-5秒钟后,窗口将完全显示。
我想问一下,是否有办法显示等待视图并在另一个线程中绘制用户控件。完成后,再完全加载主窗口。
请帮忙解决这个问题。提前感谢:)。
您需要卸载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;
}