所以我尝试使用soundplayer来加载一个wav文件,然后在加载完成后触发一个事件。原因是我不想让我的程序继续运行,直到WAV完全加载并准备就绪(如果有其他方法可以做到这一点,请让我知道)。
但不幸的是,LoadCompleted事件永远不会触发!
这是我尝试的最后一种方法。我做错了什么?
this.audio = new SoundPlayer();
audio.SoundLocation = "songs\\" + songname + ".wav";
audio.LoadAsync();属于songdata对象的。然后我知道这是主类的main方法:
this.songdata.audio.LoadCompleted += new AsyncCompletedEventHandler(audio_LoadCompleted);
this.songdata.audio.Play();最后,在主类内部:
void audio_LoadCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("aaa");
}文件开始播放,但消息框永远不会出现。顺便说一句,我使用的是Visual Studio2010和.NET 4.0。
发布于 2018-05-08 14:27:45
我得到了下面的代码来发送一个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");
}
}https://stackoverflow.com/questions/15125625
复制相似问题