请帮我看一下WPF的UI Thread

时间:2014-10-03 16:29:13

标签: wpf multithreading user-interface

我正在写一个关于WPF的项目。 在显示主窗口之前,我必须从DB查询一些数据,然后再根据 数据,我将通过代码后面的主窗口绘制一些用户控件。 处理大约需要3-5秒。因此,当第一次启动主窗口时,它将显示为白色屏幕。 3到5秒后,窗口将完全显示。

我想问一下,无论如何都要显示一个等待视图并在另一个线程中进行绘图用户控制。完成后,然后加载完全主窗口。

请帮帮我。在此先感谢:)。

1 个答案:

答案 0 :(得分: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;
}