繁体   English   中英

使用循环C#同时播放两个声音

[英]Playing two sound simultaneously with loop c#

我有背景音乐和一个正在播放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()将阻止当前线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM