请帮忙关于WPF的UI线程

4

我正在撰写一份关于WPF的项目。在显示主窗口之前,我必须从数据库中查询一些数据,然后根据这些数据,在代码后台上绘制一些用户控件。 这个过程需要大约3-5秒钟。因此,在第一次启动主窗口时,它将以空白屏幕的形式显示。经过3-5秒钟后,窗口将完全显示。

我想问一下,是否有办法显示等待视图并在另一个线程中绘制用户控件。完成后,再完全加载主窗口。

请帮忙解决这个问题。提前感谢:)。


后台工作者或优先级绑定或闪屏。 - paparazzo
1个回答

2

您需要卸载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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接