有没有办法更新进度条,而不使用后台线程

本文关键字:线程 后台 更新 有没有 | 更新日期: 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