![]() |
Auf Procedureende warten ?!
Moin !
Ich habe da zwei Proceduren. Procedure A macht eine Initialisierung der Anwendung. Das muss erst abgeschlossen sein. Nun kann es aber vorkommen, das Procedure B aufgerufen wird, ohne das die Initialisierung fertig ist, bzw. Procedure A durchgelaufen ist. Wie kann ich Procedure B dazu bringen, das sie so lange wartet, bis Procedure A durchgelaufen ist? |
Re: Auf Procedureende warten ?!
wenn du die irgendwo aufrufst ist es doch eh so das Delphi die von oben nach unten abarbeitet also sollte es doch kein problem sein?
|
Re: Auf Procedureende warten ?!
Wenn du sie im gleichen Codeblock aufrufst:
begin ... a(); b(); ... end; sollte es eigentlich funktionieren. Die Aufrufe der beiden Prozeduren nuß allerdings innerhalb eines Threads erfolgen. |
Re: Auf Procedureende warten ?!
Moin !
Nene so is das nicht. Dann wäre alles einfach. Also A macht eine Initialisierung. B macht jetzt z.B. das Laden einer Datei wenn man im Explorer den Doppelklick macht. So, die Anwendung geht auf und A rennt los. Und irgendwann haut halt B dazwischen. Und dort würde ich dann gerne warten bis A fertig ist, weil es sonst zu komischen Problemen kommt ;-) |
Re: Auf Procedureende warten ?!
du könntest am ende der Procedure A ein Flag setzen, welches du in Procedure B abfragst:
Delphi-Quellcode:
so oder so ähnlich sollte das funktionieren
while not Flag do
Application.Proccessmessages; |
Re: Auf Procedureende warten ?!
ahcso dann habe ich das falsch vestanden sry
|
Re: Auf Procedureende warten ?!
Moin !
Delphi-Quellcode:
Genau das habe ich auch versucht. Aber komischerweise hängt die Anwendung dann.
while not Flag do
Application.Proccessmessages; Die Initialisierung rennt garnimmer weiter und auch das Laden der Datei wird nie gestartet. Bei mir sah es so aus:
Delphi-Quellcode:
Wobei InitialisierungAbgeschlossen auf True geht wenn eben diese abgeschlossen ist ...
while InitialisierungAbgeschlossen = false do
Application.ProcessMessages; |
Re: Auf Procedureende warten ?!
Zitat:
Wie ist das aber möglich, außer dass Prozedur b in Prozedur a aufgerufen wird? Vielleicht könntest du folgendes versuchen: Ein Flag, das besagt, ob Prozedur B ausgeführt werden soll. Dieses wird am Beginn auf False gesetzt. Dazu kommt noch ein Flag das besagt, ob fertig initialisiert wurde. So, in Prozedur B fragst du: Ist Fertig Initialisiert? Ja, dann passts, sonst setz das Flag dass sie am Ende des Initialisierens ausgeführt werden soll, und raus aus der Prozedur. In Prozedur A fragst du ganz am Ende: Soll Prozedur B ausgeführt werden? Wenn ja, dann führ sie aus und sonst is gut. Afaik dürfte das dann so klappen, ist aber auch nicht gerade die eleganteste Lösung. greetz Mike |
Re: Auf Procedureende warten ?!
THREAD?????
ist procedur B in einem Thread?? also fallse ja dann mach doch anstatt dam Application.Terminate mal ein sleep(10)rein |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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-2025 by Thomas Breitkreuz