有没有办法更新进度条,而不使用后台线程
本文关键字:线程 后台 更新 有没有 | 更新日期: 2023-09-27 18:08:29
我有一个在按钮单击事件中发生的长计算,并且在每次迭代之后,我希望进度条更新。我想知道是否有任何方法可以做到这一点,而不使用后台线程:
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线程中执行长时间运行的同步操作。这会冻结整个UI,给用户带来糟糕的体验。
如果你可以将循环转换为使用异步调用(例如,如果它只是长时间运行,因为它与web服务或数据库通信),那么这是一种选择-并且在。net 4.5中使更容易。
否则,您将需要一个单独的线程-要么显式启动,要么使用BackgroundWorker
。