![]() |
Thread aus DLL ohne fehler schließen!!
Hi,
ich erstelle in einer DLL einen Thread:
Delphi-Quellcode:
Im TAnimationThread.execute wird eine Form (Splash2) erstellt, die den Benutzer zeigt, dass gerade was gemacht wird (Bitte warten). Auf dieser Form läuft ein einem Panel ein Bitmap von links nach rechts und zurück............
type
TAnimationThread = class(TThread) private { Private declarations } FWnd: HWND; DC : HDC; FPaintRect: TRect; FfgColor: TColor; FInterval: integer; protected protected procedure Execute; override; public FName : String; Image :TBitmap; wnd : hWnd; procedure Ready; constructor Create(barcolor : TColor; name : String); end; {********************************************************************** Konstruktor ***********************************************************************} constructor TAnimationThread.Create(barcolor : TColor; name : string); begin inherited Create(True); Application.CreateForm(TSplash2, Splash2); Splash2.Show; FfgColor := barColor; FName := name ; //FreeOnterminate := True; Resume; end; { TAnimationThread.Create } Funktioniert alles wunderbar! So wird der Thread aufgerufen:
Delphi-Quellcode:
Zum beenden habe ich diese Prozedur:
{* Start-Prozedur *}
procedure DLLWorking(nameP:PChar);stdcall; var name:String; ani : TAnimationThread; begin name:=String(nameP); ani := TanimationThread.Create($00556F60, name); Application.ProcessMessages; end;
Delphi-Quellcode:
Wenn ich die DLL in Delphi ausführe (mit entsprechendem Projekt!) klappt alles ohne Fehler. Wenn ich allerdings das Projekt in Delphi ausführe bekomme ich einen Fehler!
{* End-Prozedur *}
procedure DLLReady(wnd:Hwnd);stdcall; var ani : TAnimationThread; begin ani.Ready; <---- schließt die Form! ani.Terminate; <----- soll meinen Thread beenden!!????? end; Zugriffsverletzung....... Danke für die Hilfe! Sillium |
Re: Thread aus DLL ohne fehler schließen!!
Delphi-Quellcode:
Ani sollte Global deklariert werden und beim 1. Aufruf mit Create erzeugt werden! Da wenn ich das richtig sehe du in DLLReady einen zum 1. nicht erzeugten Thread und zum 2. nicht den mit DLLWorking gestarteten Thread beenden willst.
{* End-Prozedur *}
procedure DLLReady(wnd:Hwnd);stdcall; var ani : TAnimationThread; begin ani := TAnimationThread.Create; //Das vielleicht? Warum ist das Threadobjekt Local deklariert ani.Ready; <---- schließt die Form! ani.Terminate; <----- soll meinen Thread beenden!!????? end; Florian |
Re: Thread aus DLL ohne fehler schließen!!
Kann man in einer DLL global deklarieren??
In DLLWorking wird mein Thread mit
Delphi-Quellcode:
erstellt!!
ani := TanimationThread.Create($00556F60, name);
|
Re: Thread aus DLL ohne fehler schließen!!
Hallo,
stehe immer noch vor dem gleichen Problem!! Hat vielleicht jemand eine Lösung! Kann ich in der Funktion DLLWorking ein öffentliches Handle erstellen und an DLLReady übergeben?? Aber wie?? Danke!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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