如何在wpf中使用进度条而不使用多线程?

问题描述 投票:0回答:1

请帮助。

我想从数据库中读取数据时使用IsIndeterminate = true属性来查看进度栏更改。

我知道我可以使用Task和BackgroundWorker创建另一个线程。但是对我来说,非常重要的一点是,在完成操作之前,不要离开进行长期操作的方法。在这种情况下可以做什么?

P.S。对不起,我的英语:)

c# wpf task progress-bar backgroundworker
1个回答
0
投票

你不能。 UI线程需要运行,以在方法运行的同时显示对进度条的更改。

在后台线程中运行您的方法,但是在开始之前禁用窗口中的所有内容,以便用户无法进行任何更改,并将鼠标指针设置为沙漏,这样他们就不会尝试。

最后使用try / catch / finally重新启用所有功能并重置鼠标指针。


0
投票

您可以使用Async-Await代码标记来帮助您,但它会增加处理后台线程的复杂性/

延迟

async Task LongRunningProcess()
{

    await Task.Delay(1000);

}

DataBaseOperation

private async void Button_Click_1(object sender, RoutedEventArgs e)
{
    for (int i = 0; i < 100; i++)
    {
        progressBar.Enable = true;
        progressBar.IsIntermediate = true;
        await Task.Run(() => LongRunningProcess());

    }
}

© www.soinside.com 2019 - 2024. All rights reserved.