Sound abspielen und überwachen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Sound abspielen und überwachen

    Ich wollte ein Programm machen, das einen Sound abspielt, den man zwischendurch auch abbrechen kann. Den Sound abzuspielen war einfach:

    VB.NET-Quellcode

    1. Private Sub startsound()
    2. My.Computer.Audio.Play(My.Resources.soundfile, AudioPlayMode.Background)
    3. startbutton.text = "Stop!"
    4. End Sub

    Dann hab ich noch einen Button gemacht mit dem man den Sound abspielen und dabei noch stoppen sollte:

    VB.NET-Quellcode

    1. Private Sub buttonclick() Handles startbutton.Click
    2. If startbutton.text = "Play!" Then 'der Text ist Standardmäßig Play! und soll beim abspielen umspringen zu Stop!
    3. startsound()
    4. Else
    5. My.Computer.Audio.stop()
    6. startbutton.text = "Play!"
    7. End If
    8. End Sub

    Aber: Wie kann ich es machen, dass der Text des Button wieder zu Play! wird wenn der Sound fertig ist?
    Da musst Du einen Player verwenden, der ein IchBinFertigMitAbspielen-Event generiert.
    In dieses kannst Du

    VB.NET-Quellcode

    1. startbutton.text = "Play!"
    reinschreiben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Oder einfach mal MSDN beschäftigen

    msdn.microsoft.com/de-de/library/cf1shcah%28v=vs.90%29.aspx

    da sieht man, ui da gibts ja noch mehr Play Modes, wie z.B. AudioPlayMode.WaitToComplete das ist doch Prima, also erst den Buttontext auf Stop setzten, den Play Code ausführen und darunter den Button wieder auf Play setzten.

    Bedenke jedoch das durchs warten der Thread auch angehalten wird, führst du es im Hauptthread (GUI Thread aus) reagiert deine Oberfläche für die Dauer des Songs natürlich nicht mehr, das ist aber kein Problem. Dann lässt du das einfach in einem Extra Thread abspielen und setzt den ButtonText über Invokes.

    Jetzt frag ja nicht "ich hab nich nie mit Threads gearbeitet" das zählt nicht, denn sowas kann man lernen und hierzu gibts mittlerweile genügend Infos hier im Forum oder im Netz, genügend Fachwörter nachden du suchen kannst hast du ja nun.