2016-02-13 93 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()將阻止當前線程。