2016-04-27 5 views
2

У меня есть форма приложения Windows в Visual Studio с помощью C# и у меня есть клавиатура ключ воспроизведения звука, когда клавиша нажата с помощью:Play весь звуковой файл C# - Visual Studio

keyClick[randomiser.Next(0, 4)].Play(); 

(randomiser просто собирание из массива разных звуков)

однако, когда звук воспроизводится, а еще одна клавиша нажата до того, как звук закончится, он перестает воспроизводить этот звук и воспроизводит новый, что делает его звуковым.

Итак, мой вопрос заключается в том, как я могу гарантировать, что он воспроизводит весь звуковой файл и просто накладывает на него любую новую команду воспроизведения, а не останавливает первую игру?

+0

Вы могли породить новую нить и воспроизводить звук Async. Таким образом, это не будет прервано –

ответ

3

Вы можете воспроизводить звук асинхронно с помощью Async, чтобы он отделял звук и ваш вход. Вы также можете запустить задачу, чтобы сделать то же самое. Оба запускают звук в новом потоке, и вы можете продолжать использовать ввод, который не будет прерывать его.

Пример кода:

Task playSound = new Task(() => keyClick[randomizer.Next(0,4)].Play()); playSound.Start();

Надеется, что это помогает

+1

Спасибо, не могли бы вы привести пример кода, который я бы использовал? Я еще не очень хорошо разбираюсь в C#. – TacoMakerMan