使用循环 c# 同时播放两个声音
本文关键字:两个 声音 播放 循环 | 更新日期: 2023-09-27 18:34:26
我有一个背景音乐,还有一个按钮,正在播放1~2秒的音效。我想要的是使背景音乐即使在播放按钮声音后仍会继续播放。
目前,它正在永久停止背景音乐以播放声音按钮。
这是我现在拥有的当前解决方案
private void LoginGUI_Load(object sender, EventArgs e)
{
try
{
string filename = @"..'..'Soundtracks'The Boy Who Shattered Time.wav";
Player = new System.Media.SoundPlayer(filename);
Player.PlayLooping();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Unable to play soundtrack.");
}
}
这是按钮
public virtual void getButtonSound()
{
try
{
string filename = @"..'..'Soundtracks'demacia.wav";
Player = new System.Media.SoundPlayer(filename);
Player.PlaySync();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Unable to play soundtrack.");
}
}
尝试使用线程
new System.Threading.Thread(() => {
var c = new System.Windows.Media.MediaPlayer();
c.Open(new System.Uri(@"..'..'Soundtracks'The Boy Who Shattered Time.wav"));
c.PlayLooping();
}).Start();
new System.Threading.Thread(() => {
var c = new System.Windows.Media.MediaPlayer();
c.Open(new System.Uri(@"..'..'Soundtracks'demacia.wav"));
c.Play();
}).Start();
我想Player
是你的类的一个字段,所以你用你的按钮声音覆盖了包含循环 wav 文件的第一个实例。使用两个SoundPlayer
实例 - 每个声音一个 - 并且不需要线程。
此外,您应该将PlaySync()
更改为 Play()
,因为 Play()
和 PlayLooping()
将在内部使用线程,而PlaySync()
将阻塞当前线程。