2016-04-27 7 views
2

ich eine Windows-Forms-Anwendung habe in Visual Studio C#, und ich habe eine Taste der Tastatur Sound spielen, wenn eine Taste gedrückt wird, mit:Wiedergabe gesamte Tondatei C# - Visual Studio

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

(Die randomiser nur Kommissionierung aus einer Reihe verschiedener Sounds)

Wenn jedoch der Sound gespielt wird und eine andere Taste gedrückt wird, bevor der Sound endet, hört er auf, diesen Sound wiederzugeben, und spielt einen neuen Sound ab, was ihn schlecht klingen lässt.

Also meine Frage ist, wie stelle ich sicher, dass es spielt die gesamte Sound-Datei und überlagert nur einen neuen Wiedergabebefehl über den oberen statt den ersten von der Wiedergabe zu stoppen?

+0

Sie könnten einen neuen Thread erzeugen und den Klang Async spielen. Auf diese Weise wird es nicht unterbrochen –

Antwort

3

Sie können den Ton asynchron mit Async abspielen, so dass er den Ton und Ihre Eingabe trennt. Sie könnten auch eine Aufgabe starten, um dasselbe zu tun. Beide starten den Sound in einem neuen Thread und Sie können weiterhin Eingaben verwenden, die sie nicht unterbrechen.

Codebeispiel:

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

this helps

+1

Danke, können Sie mir ein Beispiel für den Code geben, den ich verwenden würde? Ich bin noch nicht sehr gut in C#. – TacoMakerMan