![]() |
*.dll Anfrage / Lange Funktionen abbrechen
Hallo ihr lieben Delphine,
ich komme eigentlich aus dem C++ Crosscompiling doch muss ich nun für die Schule auf Delphi zurückgreifen. Die Funktion sei: function fkt1(S: PChar): Longbool; stdcall; external 'libxyz.dll' index 1; Soweit so gut, doch wenn ich eine Rechenopperation habe, die 10 Minuten auf den Rückgabewert warten... Was dann? Windoof denkt, dass alles tot ist und "Reagiert nicht" ... Wie kann ich das GUI redrawen und ggf. einen Button haben, der mir den Call killt? Bisher habe ich hier solche hilfe nur für Schleifen gesehen... gruß Wilhelm "DerBadejunge" K. |
Re: *.dll Anfrage / Lange Funktionen abbrechen
Du könntest den Aufruf in einen Thread packen. Allerdings, wenn die Funktion i der DLL dir keine Abbruchmöglichkeit durch eine Callback Funktion gibt, dann dürfte es schwer fallen den Funktionsaufruf sauber abzubrechen.
|
Re: *.dll Anfrage / Lange Funktionen abbrechen
Danke,
Thread scheint ein nettes Stichwort. Was hällst du davon ein Kernelsignal Kill,Stop,..., zu senden? P.S. obwohl das Saubere abbrechen in diesem Fall egal ist. Oder pennt windows da? was wäre ein Beispiel code oder eine Quelle des Wissens?! gruß := Danke Wilhelm |
Re: *.dll Anfrage / Lange Funktionen abbrechen
Zitat:
Du terminierst den Thread, in dem deine Berechnung läuft, einfach mit der Methode ![]() mfG mirage228 |
Re: *.dll Anfrage / Lange Funktionen abbrechen
Zitat:
Zitat:
|
Re: *.dll Anfrage / Lange Funktionen abbrechen
Kennst Du eine saubere Methode um eine Funktion abbrechen, von dem Du den Code nicht hast und auch sonst keine Möglichkeit besteht ihn irgendwie abbzubrechen?
Da ist TerminateThread die einzige Möglichkeit. Ist zwar die "Holzhammer-Methode", aber anders gehts manchmal nicht... mfG mirage228 |
Re: *.dll Anfrage / Lange Funktionen abbrechen
;o) Dank an euch!
Ein Punkt -- Die dll ist von mir. Alles ist möglich! gruß Wilhelm P.S. wird der Speicher nicht ohnehin freigegeben, wenn die Funktion gekillt wird? |
Re: *.dll Anfrage / Lange Funktionen abbrechen
Die DLL ist von dir geschrieben? Sags doch gleich *g* Ich gehe mal davon aus, dass du in einer Schleife das berechnest, was deiner Aussage nach so lange dauert. Lager doch deine Funktion in einen Thread und checke alle X Sekunden, ob ein Bool-Wert durch eine andere Funktion gesetzt wurde und falls ja, kille die Funktion einfach mit einem Exit.
|
Re: *.dll Anfrage / Lange Funktionen abbrechen
Super, danke.
Wie halte ich dann die GUI aufrecht? Ich meine Buttons sperren krieg ich schon auf die Reihe. Wie erstelle ich den Thread? Sorry <--- Delphi-Spasst :-) Aber ansonten bekomme ich das schon Selbst hin! Dankeschön! Gruß Wilhelm |
Re: *.dll Anfrage / Lange Funktionen abbrechen
Threading Tutorial gibt es auf meiner Seite.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 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