请帮助。
我想从数据库中读取数据时使用IsIndeterminate = true属性来查看进度栏更改。
我知道我可以使用Task和BackgroundWorker创建另一个线程。但是对我来说,非常重要的一点是,在完成操作之前,不要离开进行长期操作的方法。在这种情况下可以做什么?
P.S。对不起,我的英语:)
你不能。 UI线程需要运行,以在方法运行的同时显示对进度条的更改。
在后台线程中运行您的方法,但是在开始之前禁用窗口中的所有内容,以便用户无法进行任何更改,并将鼠标指针设置为沙漏,这样他们就不会尝试。
最后使用try / catch / finally重新启用所有功能并重置鼠标指针。
您可以使用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());
}
}