.net SoundPlayer事件永远不会解雇

时间:2013-02-28 01:04:37

标签: c# .net events asynchronous soundplayer

所以我正在尝试使用声音播放器加载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。

1 个答案:

答案 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"); 
} 
}