界面上放了个mediaelement 想实现一首音乐循环播放。<MediaElement Canvas.Left="16" Canvas.Top="662" Height="45" 
                          Name="mediaElement1" Width="68" Visibility="Hidden" 
                          LoadedBehavior="Manual" MediaEnded="mediaElement1_MediaEnded" Panel.ZIndex="100" Volume="1" />
                   代码:
 private void mediaElement1_MediaEnded(object sender, RoutedEventArgs e)
        {
            //循环播放
            try
            {
              //  MessageBox.Show(mediaElement1.Source.OriginalString.ToString());
                if (mediaElement1.Source.OriginalString.ToString().Contains("\\wav\\bg\\") ||
                    mediaElement1.Source.OriginalString.ToString().Contains("\\wav\\st\\"))
                {
                    mediaElement1.Position = TimeSpan.FromMilliseconds(0);
                    mediaElement1.Close();
                    mediaElement1.Play();
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.ToString()); }
        }
问题出现了。
在本机上 win7上,能正常循环播放,多少次都正常。
在xp sp2上,只能播放一两次,然后就没声音了。也不报错。
但是我把代码中 
//  MessageBox.Show(mediaElement1.Source.OriginalString.ToString());
的注释取消掉。每次在播放结束时会弹出提示框,然后又能播放了,这样能一直循环下去。把MessageBox.Show(mediaElement1.Source.OriginalString.ToString());注释掉,又只播放一两次就停止了。请问这是什么问题。谢谢。

解决方案 »

  1.   

    对了,补充一下,音乐文件格式是wav
      

  2.   

    private void playVideo()
            {
                if(File.Exists(info.videoPath))
                {
                    mediaElement1.Source = new Uri(info.videoPath);
                    mediaElement1.Play();
                }
            }        private void mediaElement1_MediaEnded(object sender, RoutedEventArgs e)
            {
                if (mediaElement1.HasAudio)
                {
                    mediaElement1.Position = new TimeSpan(0, 0, 1);
                    mediaElement1.Play();
                }
            }
      

  3.   

    最先也是没用close,直接play()。但问题跟现在一模一样。
      

  4.   

    mediaElement1_MediaEnded函数里直接写一个play()函数就成,我就是这样实现循环播放的