为什么WPF进度条按位递增而不流畅?
本文关键字:WPF 为什么 | 更新日期: 2023-09-27 17:51:03
我有一个WPF ProgressBar,在那里我设置了最小和最大值。然后使用DispatcherTimer更新该值。我还创建了一个标签它的值与进入ProgressBar的值绑定在一起。标签正在流畅地更新(每毫秒)。然而,进度条一次只能改变一小块。发生了什么,我如何使增量流畅?
已更新:代码请求:
<ProgressBar Minimum="0" Maximum="{Binding XPath=@End}"
Value="{Binding XPath=@Position}" Style="{StaticResource ProgressStyle}" />
…
DispatcherTimer DTimer = new DispatcherTimer();
DTimer.Tick += (s, args) =>
{
var currentposition = Bass.BASS_ChannelGetPosition(stream);
}
DTimer.Interval = new TimeSpan(0, 0, 0, 0, 1);
DTimer.Start();
您是否尝试过异步执行?尝试使用Dispatcher
对象执行如下操作:
public object RunOnUiThread(Delegate method)
{
return Dispatcher.Invoke(DispatcherPriority.Normal, method);
}
…
RunOnUiThread((Action)delegate
{
currentposition = Bass.BASS_ChannelGetPosition(stream);
});
当然,ProgressBar
更新的平滑程度取决于您从方法返回的值。如果您返回的值每次都是简单地加1,那么我找不出任何其他不应该顺利更新的理由。