首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net SoundPlayer事件从不触发

.net SoundPlayer事件从不触发
EN

Stack Overflow用户
提问于 2013-02-28 09:04:37
回答 1查看 344关注 0票数 1

所以我尝试使用soundplayer来加载一个wav文件,然后在加载完成后触发一个事件。原因是我不想让我的程序继续运行,直到WAV完全加载并准备就绪(如果有其他方法可以做到这一点,请让我知道)。

但不幸的是,LoadCompleted事件永远不会触发!

这是我尝试的最后一种方法。我做错了什么?

代码语言:javascript
复制
this.audio = new SoundPlayer(); 
audio.SoundLocation = "songs\\" + songname + ".wav"; 
audio.LoadAsync();

属于songdata对象的。然后我知道这是主类的main方法:

代码语言:javascript
复制
this.songdata.audio.LoadCompleted += new AsyncCompletedEventHandler(audio_LoadCompleted);

this.songdata.audio.Play();

最后,在主类内部:

代码语言:javascript
复制
void audio_LoadCompleted(object sender, AsyncCompletedEventArgs e)
{
    MessageBox.Show("aaa");
}

文件开始播放,但消息框永远不会出现。顺便说一句,我使用的是Visual Studio2010和.NET 4.0。

EN

回答 1

Stack Overflow用户

发布于 2018-05-08 14:27:45

我得到了下面的代码来发送一个LoadCompleted事件,但是,我在与SoundPlayer对象相同的类中有“事件回调函数”。

代码语言:javascript
复制
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"); 
} 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15125625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档