![]() |
Indy Socket schließen
Hallo!
Ich habe eine von mir geschriebene DLL, die ich in meiner Anwendung lade und wieder entlade. In dieser DLL wird ein Udp Server erzeugt. Beim Schließen hängt sich die Anwendung auf und leider weiß ich nicht wieso. Der Code für das Laden und Entladen der DLL ist recht simpel, weshalb ich annehme, dass dort alles funktioniert:
Delphi-Quellcode:
Die Hauptdatei meiner DLL macht nichts weiter, als eine Unit einzubinden. Diese Unit hat einen Initialisierungs- und Finalisierungsteil:
var
lib: Cardinal; procedure TForm1.ButtonStartClick(Sender: TObject); begin lib := LoadLibrary(PAnsiChar('C:\....')); end; procedure TForm1.ButtonStopClick(Sender: TObjekt); begin FreeLibrary(lib); end;
Delphi-Quellcode:
Das Objekt der Klasse TSore (wofür das steht ist nicht so wichtig ;)) erzeugt in ihrem Konstruktor einen Udp Server und in der Close-Methode sollte er wieder geschlossen werden.
implementation
var Sore: TSore; procedure Main(Parameter: Pointer); begin Sore := TSore.Create(50001); Sore.Run; end; initialization Main(nil); InstallHook; // Funktioniert ohne Probleme, bereits getestet finalization RemoveHook; // Funktioniert ohne Probleme, bereits getestet Sore.Close; Sore.Free; Sore := nil;
Delphi-Quellcode:
Ich hab es schon im Quellcode geschrieben: ab socket.Active := False; reagiert die Anwendung nicht mehr bzw. der Socket wird nicht geschlossen. Ich habe noch keine Daten geschickt und es kommen auch keine Exceptions. Wenn ich Close weglasse, dann kommt eine Ausnahme, was ich aber auch annehme, denn der Thread des Udp Servers läuft ja noch während die DLL freigegeben wird.
constructor TSore.Create(port: Integer);
begin inherited Create; Self.socket := TIdUDPServer.Create; Self.socket.DefaultPort := port; end; procedure TSore.Run; begin Self.socket.Active := True; end; procedure TSore.Close; begin Self.socket.Active := False; // ab hier reagiert die Anwendung nicht mehr. Self.socket.Free; end; Könnt ihr mir helfen? Ich hab keine Ahnung, wieso sich die Anwendung aufhängt :? Lg oli |
Re: Indy Socket schließen
Hi!
Ich erlaube mir mal, hier zu pushen ;) Brauche die Lösung leider recht dringend :? Lg oli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 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