C# 是否有任何方法可以在不使用后台线程的情况下更新进度条?
我有一个长时间的计算,它发生在一个按钮点击事件中,在每次迭代之后,我希望进度条更新。我想知道是否有任何不使用后台线程的方法可以做到这一点:C# 是否有任何方法可以在不使用后台线程的情况下更新进度条?,c#,wpf,progress-bar,C#,Wpf,Progress Bar,我有一个长时间的计算,它发生在一个按钮点击事件中,在每次迭代之后,我希望进度条更新。我想知道是否有任何不使用后台线程的方法可以做到这一点: private void btnGetData_Click(object sender, RoutedEventArgs e) { progressBarGetData.Minimum = 0; progressBarGetData.Maximum = recordCount; prog
private void btnGetData_Click(object sender, RoutedEventArgs e)
{
progressBarGetData.Minimum = 0;
progressBarGetData.Maximum = recordCount;
progressBarGetData.Value = 0;
while(long iteration going on)
{
//do work
progressBarGetData.Value += 1;
}
}//end button click
进度条不会在屏幕上缓慢增加。我必须使用后台工作人员吗
谢谢。主要问题不是进度条,而是您正在UI线程中执行长时间运行的同步操作。这将冻结整个用户界面,给用户带来糟糕的体验 如果您可以将循环转换为使用异步调用(例如,如果它只是长时间运行,因为它正在与web服务或数据库进行通信),那么这就是一个选项,并且在.NET 4.5中变得更容易
否则,您将需要一个单独的线程-要么显式启动,要么使用。好的,我想我将不得不停止娘娘腔,使用线程。谢谢你的帖子!