ProgressBar控件的更新速度不如Label控件的文本更新速度

lingxineden608 2017-08-11 08:24:17
大家好,有没有谁遇到一个现象:
就是在用进度条显示耗时操作的情况时,会出现进度条的更新速度要滞后于Label标签文本的更新速度,即我的想法是两者应该同步变化。
以上请各位大侠帮忙解答下,问题若有描述不当或疑惑不清之处,麻烦回复下,谢谢!
...全文
284 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2017-08-15
  • 打赏
  • 举报
回复
是不是一定得用lamda表达式,不然没办法实现。此外,我的需求再次重述下,是要求在一条循环语句里,实现label控件和进度条控件的内容同步更新。
zmidl 2017-08-11
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
不会,是你的代码写的有问题吧,自己拿去测试(.net framework 4.5):

private async void button1_Click(object sender, EventArgs e)
        {
            var process = new Progress<string>(s =>
            {
                label1.Text = s;
                progressBar1.Value = Convert.ToInt32(s);
            });
            await Task.Factory.StartNew(() => LongWorkTest.LongWork(process), TaskCreationOptions.LongRunning);
            label1.Text = "完成!";
        }
        class LongWorkTest
        {
            public static void LongWork(IProgress<string> progress)
            {
                for (var i = 0; i < 100; i++)
                {
                    Task.Delay(50).Wait();
                    progress.Report(i.ToString());
                }
            }
        }
正好借此楼问下版主,这个“async ” 和“await ”是不是用于界面UI的异步的呢?IO操作的耗时任务完全可以通过task的异步直接处理 为啥还要加个 async不是多此一举吗?
exception92 2017-08-11
  • 打赏
  • 举报
回复
不会,是你的代码写的有问题吧,自己拿去测试(.net framework 4.5):

private async void button1_Click(object sender, EventArgs e)
        {
            var process = new Progress<string>(s =>
            {
                label1.Text = s;
                progressBar1.Value = Convert.ToInt32(s);
            });
            await Task.Factory.StartNew(() => LongWorkTest.LongWork(process), TaskCreationOptions.LongRunning);
            label1.Text = "完成!";
        }
        class LongWorkTest
        {
            public static void LongWork(IProgress<string> progress)
            {
                for (var i = 0; i < 100; i++)
                {
                    Task.Delay(50).Wait();
                    progress.Report(i.ToString());
                }
            }
        }
dy00544 2017-08-11
  • 打赏
  • 举报
回复
引用 楼主 lingxineden608 的回复:
大家好,有没有谁遇到一个现象: 就是在用进度条显示耗时操作的情况时,会出现进度条的更新速度要滞后于Label标签文本的更新速度,即我的想法是两者应该同步变化。 以上请各位大侠帮忙解答下,问题若有描述不当或疑惑不清之处,麻烦回复下,谢谢!
没遇到你这种情况,我在老爷机上跑程序都能同步变化。莫不是你刷新速度太快了。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧