WPFMediaPlayer:如何顺序播放,同步播放?我有这个功能:publicstaticvoidPlay(stringFileName,boolAsync=false){System.Windows.Media.MediaPlayermp=newSystem.Windows.Media.MediaPlayer();mp.Open(FileName.ToUri());mp.Play();当我打电话给Play(@"file1.mp3");播放(@"file2.mp3");播放(@"file3.mp3");播放(@"file4.mp3");他们都在同一时间演奏。如何让MediaPlayer等到文件结束再播放下一个?该功能应该是什么样的?编辑:publicstaticvoidPlay(UriFileName,boolAsync=false){AutoResetEventa=newAutoResetEvent(false);MediaPlayermp=newMediaPlayer();mp.MediaEnded+=(o1,p1)=>{a.Set();};mp.MediaOpened+=(o,p)=>{inttotal=Convert.ToInt32(mp.NaturalDuration.TimeSpan.TotalMilliseconds);mp.Play();if(!Async){//System.Threading.Thread.Sleep(total);a.WaitOne();}};mp.Open(文件名);在下一次调用Play之前,您需要等待当前文件播放完毕。这是通过侦听MediaEnded事件实现的。你需要监听这个事件:mp.MediaEnded+=MediaEndedEventHandler;但是,您需要将MediaPlayer对象设为静态,这样您才能拥有其中之一。确保仅添加此处理程序一次。然后在处理程序中发出一个新事件以开始播放下一个文件。您正在实施的是一个播放列表。因此,您将文件添加到播放列表,然后您需要跟踪播放列表中的当前位置。我把我的解决方法分享给大家:我创建了一个Window:WindowPlay.xamlWindowPlay.xaml.cs:以上是C#学习教程:WPFMediaPlayer:Howtoplaysequentially,synchronously?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注——usingSystem;使用System.Windows;namespaceSistema.Util{//////WindowPlay的交互逻辑。xaml///publicpartialclassWindowPlay:Window{publicWindowPlay(){try{InitializeComponent();}catch{this.Close();}}//////播放指定的文件名//////要播放的文件名///如果为True,则在后台播放并立即将控件返回给调用代码。如果为False,则播放并等待直到完成以将控制权返回给调用代码。publicstaticvoidPlay(UriFileName,boolAsync=false){WindowPlayw=newWindowPlay();varmp=w.MediaElement1;if(mp==null){//podeestarsendofechadaajanelareturn;}mp.Source=(文件名);如果(异步)w.Show();否则w.ShowDialog();}privatevoidMediaElement1_MediaEnded(objectsender,RoutedEventArgse){this.Close();}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
