myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grafik und Sound » Wie kann ich kontrollieren, ob gerade eine MP3-Datei im MediaPlayer läuft?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich kontrollieren, ob gerade eine MP3-Datei im MediaPlayer läuft?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Kriz
myCSharp.de-Mitglied

Dabei seit: 17.01.2017
Beiträge: 72


Kriz ist offline

Wie kann ich kontrollieren, ob gerade eine MP3-Datei im MediaPlayer läuft?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Guten Morgen,

Ich tue mich etwas schwer mit meinem Mediaplayer...
Ich möchte kontrollieren, ob gerade ein MP3 läuft, wenn nicht, soll eins gestartet werden. Die Kontrolle, ob etwas läuft, soll ununterbrochen stattfinden, also in eine while-Schleife gepackt.
Um meinen Main Thread nicht zu blockieren, starte ich dies in einem separaten Thread, dann startet aber die Musik nicht. Erst wenn ich einen Breakpoint setze geht es los.

Aufruf aus meinem Mainthread:

C#-Code:
Task.Run(() => StartPlayer());

Mein Player:

C#-Code:
private Task StartPlayer()
        {
            mediaPlayer = new MediaPlayer();
            while (true)
            {
                if (mediaPlayer.Position <= new TimeSpan(0,0,0))
                {
                    if (Playlist.Count > 0)
                    {

                        mediaPlayer.Close();
                        mediaPlayer.Open(new Uri(Playlist[0].Location));
                        mediaPlayer.Play();
                        CurrentTitle = Playlist[0];
                    }
                }

            };
        }
Neuer Beitrag 08.10.2020 05:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
chilic
myCSharp.de-Poweruser/ Experte

Dabei seit: 12.02.2010
Beiträge: 2.053


chilic ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Details über den Mediaplayer kenne ich nicht, aber anhand deinem Code könnte das ein möglicher Ansatz sein.

Zitat:
soll ununterbrochen stattfinde

Das tut sie auch, so schnell es geht.
Das lastet deinen Thread komplett aus, der macht so schnell es ihm möglich ist den Player zu und wieder auf.
Wahrscheinlich kommt er deswegen nicht dazu etwas abzuspielen, denn selbst nach dem Play Aufruf ist Position immer noch kurz 0 und führt dazu dass er wieder geschlossen und neu gestartet wird.
Neuer Beitrag 08.10.2020 06:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.280
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du hast ein Poll-Prinzip gebaut, was man eigentlich in der Software vermeiden will: weil es last kostet.
Du kontrollierst so schnell es geht, mit der gesamten Power Deiner Maschine, die ganze Zeit das gleiche Zeug: das kostet unheimlich viel Leistung.
iOS und Android verbieten genau solche Software Umsetzungen, weil sie durch den enormen Leistungshunger den Akku leer saugen.

Arbeite mit Benachrichtigungen, was in Deiner Software passiert; also mit Subscriptions und Events.
Aber nicht mit enorm Leistungsintensivem Polling und einer Endlosschleife.
Neuer Beitrag 08.10.2020 09:07 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.535
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Falls du den System.Windows.Media.MediaPlayer meinst, dann gibt es dort das  MediaEnded-Event, auf das du reagieren kannst.
Neuer Beitrag 08.10.2020 20:46 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 31.10.2020 23:03