Erfahren wenn My.Computer.Audio.Play .Background fertig ist

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Elephant.

    Erfahren wenn My.Computer.Audio.Play .Background fertig ist

    Mit My.Computer.Audio.Play(WavDatei, AudioPlayMode.Background)
    kann ich ja ein Datei abspielen und weitere Dinge im Programm machen.

    Gibt es eine Möglichkeit zu erfahren wann die Datei fertig abgespielt ist?

    Hintergrund ist eine Playlist abzuspielen, dabei aber z.B. eine weiter Playlist zu erstellen oder auch mal ein Song weiter zu springen.

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Habe das gerade gegoogelt. Egal, was ich finde, alles läuft darauf hinaus, dass man sich beim Nuget-Paket-Manager etwas herunterlädt und einbinden lässt. Mit My.Computer.Audio.Play kommst du nicht weit...

    stackoverflow.com/questions/56…f-music-is-played/5601916

    Find out if a song has finished playing site:stackoverflow.com

    Ansonsten eine Idee von mir: Lade dir NAudio herunter und kontrolliere, ob der Lautstärkepegel an der Soundkarte == 0.0 ist. Dann darf natürlich auch nix anderes abgepsielt werden...
    @Elephant mit AudioPlayMode.Background arbeitest Du asynchron, das Ende ist erreicht und gut.
    Mit AudioPlayMode.WaitToComplete arbeitest Du synchron und der Code macht nach Beendigung weiter.
    Wenn Du diese synchrone Methode in einen Thread auslagerst, kannst Du Dir ein Event senden, wenn das Abspielen beendet ist.
    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!

    Neu

    RodFromGermany schrieb:

    Wenn Du diese synchrone Methode in einen Thread auslagerst, kannst Du Dir ein Event senden, wenn das Abspielen beendet ist.


    Das hört sich gut an.
    Muß ich mal sehen wo ich nachlesen kann wie das mit Thread und Event senden geht.
    Vorab eine Frage, mit My.Computer.Audio.Stop() kann ich ja die wiedergabe beenden. (z.B. Song überspringen)
    Kann ist das irgentwo im Hauptprogramm machen oder mu0 das auch im Thread passieren?

    Frage hat sich erledigt. Das mit Thread auslagern habe ich schon gelesen und es ist ja einfach.
    Also schnell mal Ausprobiert, Wiedergabe beenden geht irgentwo im Hauptprogramm.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Elephant“ ()

    Neu

    Muß meine Aussage berichtigen.
    Hatte beim Test noch .Background statt .WaitToComplete in meinem Thread stehen.
    Wenn ich jetzt irgentwo im Programm My.Computer.Audio.Stop() ausführe steht das Programm bis der Song zu ende ist.
    Das stoppen mit My.Computer.Audio.Stop() geht also nur bei My.Computer.Audio.Play(WavDatei, AudioPlayMode.Background)

    Neu

    @Elephant Wenn Du einen Player bauen willst, nimm ein anständiges Player-Control, da gibt es im Forum genügend Beispiele.
    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!