Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi On Event und Threads (https://www.delphipraxis.net/58421-event-und-threads.html)

Arnulf 6. Dez 2005 21:39


On Event und Threads
 
Hi
Ich versuche ein MPlayer objekt zu basteln - MPlayer ist ein consolen programm.
Über Pipes lese ich die daten aus oder schick dem Player was immer ich brauch.

Jedenfalls würde ich nun gerne ein Objekt erstellen das mir die ganze Steuerung abnimmt.
Jetzt muß ich über die Pipes ständig lesen oder schreiben und auch noch darauf achten ob der Mplayer beendet wird oder ob er noch läuft.

Dazu kommt ein thread der die zentrale steuerung übernimmt ( das objekt darf ja das hauptprogramm nicht behindern ).
Um nun aber auch eine progressbar nach aussen durchzureichen lese ich vom mplayer ständig die time daten aus.

Jetzt muß ich also ein OnProgressBar event verkapseln.
Ich frag mich wie das funktionieren soll.
Wenn der thread also ein update für die Progressbar hat, müsste der ein event auslösen das die onprogressbar routine aufruft.
Natürlich darf die nicht im kontext des threads laufen sondern im kontext des hauptprogramms (GUIs).

Ich hab versucht ein bisschen über events nachzulesen, aber wenn ich zum beispiel

Delphi-Quellcode:
IF Assigned(FOnProgressBar) THEN FOnProgressBar(Time);
im thread verwende, wird dann nicht die Procedure die dahinter steht im kontext des Threads ausgeführt?.

Oder weiß jemand wie man sowas machen würde.
Die einzigen Components die etwas ähnliches machen dürften sind wohl die sockets aber da hab ich keine sourcen gefunden wo ich mal schnell nachschauen könnte.

Danke
Arnulf

SirThornberry 6. Dez 2005 21:42

Re: On Event und Threads
 
wenn der Source der Komponente im Thread ausgeführt wird so wird natürlich auch das FOnProgressBar(Time) im Context des Thread aufgerufen. Du kannst dieses Event aber auch syncronisieren (TThead.Syncronize)

Arnulf 6. Dez 2005 21:56

Re: On Event und Threads
 
Hm - Syncronize.
Das würde aber bedeuten ich las den user der mein objekt benutzt eine prozedure schreiben die mein thread dann abarbeiten muß.

Ich hab mir schon verrückte konstruktionen mit windows messages ausgedacht, aber das in einem objekt ist irgendwie komisch :).

Machen das Blocking Sockets die in einem Thread laufen auch so? - also das OnRead event diverser Sockets?
Würde mich interessieren wie das dort gelöst ist.

Thx
Arnulf


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.

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