当前位置: 首页 > 编程语言 > C#

在wpfShare中实时更新进度条

时间:2023-04-11 00:14:42 C#

Wpf中实时更新进度条进度条显示实时更新时遇到了一些麻烦。这是我当前的代码(inti=0;i<100;i++){progressbar1.Value=i;线程.睡眠(100);但是由于某种原因,当函数运行时进度条显示为空,然后直到函数运行结束才显示任何内容。有人可以向我解释该怎么做吗?我是C#/WPF的新手,所以我不是100%确定如何在不同的线程上实现Dispatcher(如其他一些帖子中所建议的)来解决这个问题。澄清一下,我的程序有一个按钮,当按下该按钮时,它会从文本框中获取值并使用API检索信息,并基于它创建标签。我希望在处理完每一行数据后更新进度条。这就是我现在所拥有的:privateasyncvoidsearch(objectsender,RoutedEventArgse){varprogress=newProgress(value=>progressbar1.Value=value);awaitTask.Run(()=>{this.Dispatcher.Invoke((Action)(()=>{在实际for循环发生之前进行一些预处理for(inti=0;iprogressBar.Value=value);awaitTask.Run(()=>{for(inti=0;i)progress).Report(i);线程.睡眠(100);}});您需要使用async关键字标记您的方法才能使用await,例如:privateasyncvoidButton_Click(objectsender,RoutedEventArgse)设法使其工作。我需要做的就是做而不是做这个progressBar1.value=i;我只需要做progressbar1.Dispatcher.Invoke(()=>progressbar1.Value=i,DispatcherPriority.Background);您应该使用ContainsaBackgroundWorker,它为您提供了报告后台线程在事件中的进度的方法。该事件由创建BackGroundWorker的线程自动调用。BackgroundWorker.ProgressChanged可用于向用户报告异步操作的进度。//此事件处理程序更新进度条。privatevoidbackgroundWorker1_ProgressChanged(objectsender,ProgressChangedEventArgse){this.progressBar1.Value=e.ProgressPercentage;有关使用它的详细信息,请参阅MSDN。以上就是C#学习教程:实时更新wpf中进度条的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: