Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как в c# одновременно запустить два и более звуковых файла в Windows Forms?

Maksmarts Профи (743), на голосовании 3 года назад
У меня работает такой код:

private void button1_Click(object sender, EventArgs e)
{
System.Media.SoundPlayer player1 = new System.Media.SoundPlayer(@"Z:\Бам. wav");
player1.Play();
}
private void button1_Click(object sender, EventArgs e)
{
System.Media.SoundPlayer player2 = new System.Media.SoundPlayer(@"Z:\Бум. wav");
player2.Play();
}

Все воспроизводит, но как только включается второй файл, первый вырубается
Как будто у них один поток - может играть только один файл
Как сделать, чтоб два и более звуковых файла играли одновременно, подскажете?
Голосование за лучший ответ
STALKER Просветленный (40908) 3 года назад
using System.Threading;
using System.Threading.Tasks;

Использовать несколько потоков можно например
Thread Th1= new Thread(sound_Play1);
Thread Th2= new Thread(sound_Play2);

private void button1_Click(object sender, EventArgs e)
{
Th1.Start();
Th2.Start();
}

private void sound_Play1()
{
System.Media.SoundPlayer player1 = new System.Media.SoundPlayer(@"Z:\Бам. wav");
player1.Play();
}

private void sound_Play2()
{
System.Media.SoundPlayer player2 = new System.Media.SoundPlayer(@"Z:\Бум. wav");
player2.Play();
}
MaksmartsПрофи (743) 3 года назад
Чет не работает
Все равно играет только одна аудиозапись

private static void sound_Play1()
{
System.Media.SoundPlayer player1 = new System.Media.SoundPlayer(@"Z:\Бам. wav");
player1.Play();
}

private static void sound_Play2()
{
System.Media.SoundPlayer player2 = new System.Media.SoundPlayer(@"Z:\Снеир. wav");
player2.Play();
}
Thread Th1 = new Thread(sound_Play1);
Thread Th2 = new Thread(sound_Play2);

private void Form1_Load(object sender, EventArgs e)
{
Th1.Start();
Th2.Start();
}
private void button1_Click(object sender, EventArgs e)
{
sound_Play1();
sound_Play2();
}
STALKER Просветленный (40908) Maksmarts, не правильно сделали. Каждый звук нужно запускает в своем потоке. А через кнопку вы не запускаете потоки, а вызываете сразу функцию. В обработчике нажатия кнопки оставьте только это Th1.Start(); Th2.Start();
Похожие вопросы