Для начала, на данный момент, все остальное работает отлично. Итак, у меня есть проект, который включает в себя часть музыкального проигрывателя (медиаплеер). Положение визуализируется с помощью текста и с помощью ползунка, и в этом моя проблема. Когда я делаю ползунок «перетаскиваемым» (чтобы я мог установить положение, а не просто получить его), носитель (.mp3) начинает заикаться случайным образом. Вот часть кода:
public double ElapsedSeconds
{
get
{
return mediaPlayer.Position.TotalSeconds;
}
set
{
//mediaPlayer.Position = TimeSpan.FromSeconds(value);
PropertyChanged(this, new PropertyChangedEventArgs(nameof(ElapsedSeconds)));
}
}
private void Timer_Tick(object sender, EventArgs e)
{
ElapsedSeconds = mediaPlayer.Position.TotalSeconds;
TextContent = String.Format("{0} - {1} - {2:mm\\:ss}/{3:mm\\:ss}", playedArtist, playedTitle, TimeSpan.FromSeconds(ElapsedSeconds), TimeSpan.FromSeconds(TotalSeconds));
}
ElapsedSeconds привязывается к значению ползунка.
Я могу перетащить ползунок (и создать проблему) только когда раскомментирую эту строку
А вот что я уже пробовал:
- Я использовал приватное поле для хранения данных
- Пытался использовать милисекунды и тики, но стало хуже
- Попытался изменить частоту тиков диспетчера (в настоящее время 100 мс), что обновляет текущее значение
Есть ли способ заставить заикание уйти? (и если да, что это)
p.s .: Если кому-то интересно, вот весь файл .cs: GitHub Link