![]() |
Re: Einfrieren des Programms verhindern
Dann will ich auch mal Werbung machen:
![]() |
Re: Einfrieren des Programms verhindern
Danke für eure Antworten.
Leider bin ich kein Vollzeitprogramierer und habe eigentlich auch keine Zeit mich intensiv mit dem Thema "Threads" auseinander zusetzen. Es scheint nämlich ziemlich umfangreich zu sein. Da fällt mir das ganz schön schwierig durchzublicken. :wall: Könnte mir vielleich jemand einige Schritte auf die Schnelle klarmachen was zu tun ist? Mein Problem: Anwendung bekommt vom Nutzer Daten. 1. Aufruf und Weitergabe der Daten an eine .dll. 2. Nach Rückgabe der Berechnungen -> Ausgabe Bevor ich die .dll Aufruf muss ich einen neuen Thread erstellen, richtig? Kann mir vielleicht jemand eine Art CodeSchnipsel bereitstellen. Danke und liebe Grüße Todd |
Re: Einfrieren des Programms verhindern
Tach!
Ich haue hier mal was ungetestetes für dich hin:
Delphi-Quellcode:
Diesen Thread kannst du einfach erstellen und er arbeitet dann das Execute ab. Das ist auch das, was "im Thread" läuft. Sonst nichts. Am Ende schickt der Thread eine Nachricht an deine Form (das Handle hast du in ParentHandle dem Thread mitgegeben im Konstruktor).
type
TMeinThread = class(TThread) private FParentHandle: hWND; procedure Execute; override; public constructor Create(ParentHandle: hWND); destructor Destroy; override; end; implementation constructor TMeinThread.Create(ParentHandle: hWND); begin inherited Create(True); FreeOnTerminate := True; FParentHandle := ParentHandle; Resume; end; procedure TMeinThread.Execute; var AufrufErgebnis: Integer; begin // DLL Aufruf, Krams erledigen, ein Bier trinken oder was auch immer SendMessage(ParentHandle, WM_MEINENACHRICHT, AufrufErgebnis, 0); end; Die Prozedur in deiner Form sieht dann ungefähr so aus:
Delphi-Quellcode:
Das Ergebnis des Threads steht dann in Msg.WParam (oder so ähnlich).
procedure ThreadMessage(var Msg: TMessage); message WM_MEINENACHRICHT;
Hoffe, das schafft (ein bisschen) Klarheit :) ? |
Re: Einfrieren des Programms verhindern
Vielen lieben Dank.
Das hilft mir sicherlich weiter. Ich werde mich morgen mal damit beschäftigen uns sehn ob ich es alleine zum laufen bekomme. Liebe Grüße Todd |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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