在我的表格中,我有一个小型媒体播放器,它非常基本,它具有基本的功能嵌套、上一个、播放、停止、音量增加和一个轨迹栏。我可以通过以下代码通过拖动轨迹栏来寻找歌曲:: (假设轨迹栏的最大值是声音文件的总秒数)
private void SeekBar_Scroll(object sender, EventArgs e)
{
Player.Position = TimeSpan.FromSeconds(SeekBar.Value);
}
但是当音乐播放时我无法让酒吧自行前进..我想出了这个想法:
假设我们有一首 90 秒时长的歌曲。现在轨迹条最大值为 100,因此:100 --> 90 1 --> X X = 0.9 秒 这是条的刻度之间的间隔,以及轨迹条值应在每个刻度中增加的值。这是我的代码:
while (SeekBar.Value < 100)
{
System.Windows.Duration duration = Player.NaturalDuration;
SeekBar.Value += duration.TimeSpan.Seconds / 100;
Thread.Sleep(duration.TimeSpan.Seconds * 10);
}
现在我认为这应该在单独的线程中运行,对吗?但是问题是,当我这样做时,我收到一条恼人的消息,说 TrackBar 正在一个线程中使用,而不是在它创建的线程中使用.. 我该如何解决这个问题?
我想把这段代码放在MouseLeave
和MouseEnter
事件中,但这没有意义,因为它将在同一个线程上,应用程序将冻结..
我怎样才能让酒吧自行移动?