为什么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();

为什么WPF进度条按位递增而不流畅?

您是否尝试过异步执行?尝试使用Dispatcher对象执行如下操作:

public object RunOnUiThread(Delegate method)
{
    return Dispatcher.Invoke(DispatcherPriority.Normal, method);
}

RunOnUiThread((Action)delegate
{
    currentposition = Bass.BASS_ChannelGetPosition(stream);
});

当然,ProgressBar更新的平滑程度取决于您从方法返回的值。如果您返回的值每次都是简单地加1,那么我找不出任何其他不应该顺利更新的理由。