0
背景:我通過媒體元素播放音樂,並使用滑塊顯示歌曲中的點。這個更新是由後臺工作人員完成的,原因很明顯。確保背景工作者在再次運行之前已完成
private void bgPlay_DoWork(object sender,DoWorkEventArgs e)
{
while (isMediaPlaying)
{
this.Dispatcher.Invoke((Action)(() =>
{
timelineSlider.Value = mediaElement1.Position.TotalMilliseconds;
}));
}
}
private void Library_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
try
{
mediaElement1.Stop();
isMediaPlaying = false;
mediaElement1.Source = new Uri(songData[Library.SelectedIndex].Location);
mediaElement1.Volume = (double)volumeSlider.Value;
mediaElement1.Play();
isMediaPlaying = true;
bgPlay.RunWorkerAsync();
}
catch(Exception ex) {
F.MessageBox.Show(ex.ToString());
}
}
當我播放一首歌曲,然後雙擊一個不同的背景工人仍在循環和因爲它達到bgPlay.RunWorkerAsync();
以前的實例結束前拋出異常。我試圖使用isMediaPlaying bool來告訴backgroundworker何時退出循環,但主線程在完成前達到bgPlay.RunWorkerAsync();
。
非常全面的答案。謝謝! – Wilson