Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   D2010, TMediaPlayer, Application.OnIdle wird nicht ausgeführt (https://www.delphipraxis.net/158822-d2010-tmediaplayer-application-onidle-wird-nicht-ausgefuehrt.html)

hoika 4. Mär 2011 11:40

D2010, TMediaPlayer, Application.OnIdle wird nicht ausgeführt
 
Hallo #,

wie oben beschrieben.
Lasse ich den TMediaPlayer laufen, wird Application.OnIdle nicht angesprungen.
Erst, wenn er mit der Datei fertig ist.
OK, die App ist nicht Idle ...
Kann der TMediaPlayer vielleicht gar kein asynchrones Abspielen ?

Weiss jemand was darüber ?

Danke


Heiko

himitsu 4. Mär 2011 11:55

AW: D2010, TMediaPlayer, Application.OnIdle wird nicht ausgeführt
 
OnIdle wird, wie es übrigens in der OH erwähnt wird, nur aufgerufen, wenn keine Nachrichten/Messages mehr in der Nachrichtenschleife vorhanden sind.
Der TMediaplayer wird wohl einfach ständig irgendwelche Messages rumschicken und schon gibt es kein OnIdle mehr. :stupid:

PS: Wenn die App auf Eingaben reagiert oder einen Timer auslöst, dann wird der TMediaplayer wohl doch asynchrones arbeiten.

hoika 4. Mär 2011 16:39

AW: D2010, TMediaPlayer, Application.OnIdle wird nicht ausgeführt
 
Hallo,

ich habe das jetzt etwas genauer.

Delphi-Quellcode:
Player.Open;
Player.Play;
Der Code läuft ohne Unterbrechung durch.

OnIdle wird aber für 8 Sekunden nicht aufgerufen.
Das ist genau die Zeit, die er für das Abspielen braucht.

???

Hilfe .. ;)



Heiko

shmia 4. Mär 2011 17:22

AW: D2010, TMediaPlayer, Application.OnIdle wird nicht ausgeführt
 
Application.OnIdle war eigentlich nie ein erstzunehmendes Event.
Der Zeitpunkt zu dem das Event aufgerufen wird ist völlig unvorhersehbar
und der Eventhandler darf nur sehr kurzdauernde Aktionen ausführen.
Würde man in OnIdle länger dauernde Aufgaben (>=1s) ausführen, dann würde die Anwendung
sehr schlecht reagieren.

OnIdle gibt es nicht deshalb weil man das Event unbedingt braucht, sondern eher weil ein VCL-Programmierer gedacht hat: es wäre doch ganz witzig ein Event für den Fall zu haben, dass die Anwendung gerade nix zu tun hat.

himitsu 4. Mär 2011 18:06

AW: D2010, TMediaPlayer, Application.OnIdle wird nicht ausgeführt
 
Zitat:

Zitat von shmia (Beitrag 1085939)
es wäre doch ganz witzig ein Event für den Fall zu haben, dass die Anwendung gerade nix zu tun hat.

Und das nur in Bezug auf den Hauptthread ... andere Threads können hart arbeiten und es kann dennoch passieren, daß OnIdle ausgelöst wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz