所以我正在尝试使用声音播放器加载wav文件,然后在加载完事件后触发事件。原因是我不希望我的程序继续运行,直到WAV完全加载并准备就绪(如果还有另一种方法,请告诉我)。
但遗憾的是LoadCompleted事件永远不会被触发!
这是我尝试的最后一个。我做错了什么?
this.audio = new SoundPlayer();
audio.SoundLocation = "songs\\" + songname + ".wav";
audio.LoadAsync();
属于songdata对象。然后我有这个主要的主要方法:
this.songdata.audio.LoadCompleted += new AsyncCompletedEventHandler(audio_LoadCompleted);
this.songdata.audio.Play();
最后在主要课程中:
void audio_LoadCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("aaa");
}
文件开始播放,但永远不会出现消息框。顺便说一下,我正在使用Visual Studio 2010和.NET 4.0。
答案 0 :(得分:0)
我有以下代码向我发送一个LoadCompleted事件,但是,我有"事件回调函数"与SoundPlayer对象在同一个类中。
class MediaPlayer{
System.Media.SoundPlayer soundPlayer;
public MediaPlayer(MemoryStream stream){
soundPlayer = new System.Media.SoundPlayer(stream);
soundPlayer.LoadCompleted += new AsyncCompletedEventHandler(player_LoadCompleted);
soundPlayer.Load();
}
public void Play(){
soundPlayer.Play();
}
// Handler for the LoadCompleted event.
private void player_LoadCompleted(object sender, AsyncCompletedEventArgs e){
Console.WriteLine("LoadCompleted");
}
}