2016-02-13 107 views
2

我有一个背景音乐和一个播放1〜2秒音效的按钮。 我想要的是让背景音乐即使在播放按钮声音后仍会继续播放。与循环c同时播放两个声音#

目前,它正在停止背景音乐永久播放声音按钮。

这是当前的解决方案,我现在有

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

回答

0

尝试使用线程

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(); 
+0

它似乎没有工作,它是说.thread(()必须有一些东西,所以我把一个虚拟值,但现在它说我的网址是无效的括号。也使用System.Windows .Media.MediaPlayer“似乎不适用于我 –

+0

我已更新为代码报价缺失, – CodeIsLife

0

我猜Player是你的类的字段,所以你用你的按钮覆盖了包含循环wav文件的第一个实例ND。使用SoundPlayer的两个实例 - 每个声音一个 - 并且应该不需要线程。你

还应该更改PlaySync()Play(),因为Play()PlayLooping()将使用线程内部,而PlaySync()将阻止当前线程。