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

时间:2014-03-20 14:26:07

标签: c# wpf progress-bar

我有一个WPF ProgressBar,我在其中设置了Min和Max值。然后我使用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();

1 个答案:

答案 0 :(得分:0)

您是否尝试异步执行此操作。尝试使用Dispatcher对象执行以下操作:

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

...

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

当然,ProgressBar更新的顺畅程​​度取决于您从方法返回的值。如果您返回的值每次只增加一个,那么我就看不出任何其他原因导致它不能顺利更新。