AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Handle Count erhöht sich

Ein Thema von venice2 · begonnen am 28. Jul 2020 · letzter Beitrag vom 29. Jul 2020
Antwort Antwort
venice2
(Gast)

n/a Beiträge
 
#1

AW: Handle Count erhöht sich

  Alt 28. Jul 2020, 21:40
Ach so ist das.

Dachte immer es sagt aus ob die DLL entladen wurde oder nicht.
Desto trotz kann ich im Process Explorer erkennen das die DLL vom Prozess gelöst - entladen wurde.

Welchen sinn macht FreeLibrary wenn man damit nicht garantieren kann das die DLL auch entladen wurde.

Ob die DLL entladen wurde prüfe ich jetzt so (ändert aber auch nichts am counter)

Delphi-Quellcode:
  if DllHandle <> 0 then
  begin
    FreeLibrary(DllHandle);
    module := GetModuleHandle(DLLPath);
    if module = 0 then
      DllHandle := 0;
  end;
So kann ich wenigstens prüfen ob diese vom Prozess gelöst wurde.
Der code ist nur ein Beispiel nicht vollständig!

Geändert von venice2 (28. Jul 2020 um 22:13 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: Handle Count erhöht sich

  Alt 29. Jul 2020, 00:03
Ich glaube habe den Fehler gefunden.
Ich erstelle ein Event

Delphi-Quellcode:
    hEventFree := CreateEvent(nil, False, False, nil);
    PostThreadMessage(ThreadId, WM_QUIT, 0, 0);
    try
      repeat
        WaitRe := WaitForSingleObject(hEventFree, 15);
        if WaitRe <> WAIT_OBJECT_0 then
          WinProcessMessages;
      until WaitRe = WAIT_OBJECT_0;
    finally
      CloseHandle(hEventFree); // hat gefehlt
      ThreadId := 0;
    end;
wenn der Thread beendet wird setze ich das Event
SetEvent(hEventFree);

Habe das Event Handle aber nicht freigegeben.
CloseHandle(hEventFree);

jetzt bleibt der Counter constant.
Hoffe das war mein Problem. Oder doch nicht?
Würde mich mal interessieren ob ich richtig liege.

Das man das Event Handle freigeben muss war mir nicht bekannt.
Auch hier im Forum habe ich noch nicht gelesen das es jemand tut.

Frage mich nur warum hat FastMM4 und oder EurekaLog das nicht erkannt.

Geändert von venice2 (29. Jul 2020 um 01:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#3

AW: Handle Count erhöht sich

  Alt 29. Jul 2020, 07:19
Das man das Event Handle freigeben muss war mir nicht bekannt.
Steht (ganz unten) in den Remarks zur API-Funktion MSDN-Library durchsuchenCreateEvent:
Zitat:
Use the CloseHandle function to close the handle. The system closes the handle automatically when the process terminates. The event object is destroyed when its last handle has been closed.

Zitat:
Frage mich nur warum hat FastMM4 und oder EurekaLog das nicht erkannt.
Simpel: Weil sowas nicht von einem Delphi Memory Manager (MM) erfasst wird bzw. werden kann. Gleiches gilt für Icons, die man mit LoadIcon oder LoadImage lädt. Die gehen am Delphi MM vorbei, und daher bekommt der davon nix mit.

Grüße
Dalai
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
140 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Handle Count erhöht sich

  Alt 29. Jul 2020, 08:58
Hat die Benutzung von CreateEvent irgendwelche Vorteile gegenüber TEvent.Create ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#5

AW: Handle Count erhöht sich

  Alt 29. Jul 2020, 09:54
Nein.

TEvent kapselt im Windows auch nur diese API,
mit dem Vorteil, dass es auf anderen Plattformen auch was Vergleichbares nutzt, wo die WinAPI nicht bekannt ist.

Selbes gilt auch für CriticalSections und Dergeleichen, wo es ebenfalls inzwischen im Delphi eine Kapselung gibt (Delphi-Referenz durchsuchenTCriticalSection)
Aber da darf man auch gern Delphi-Referenz durchsuchenTMonitor nehmen (Achtung, das Richtige, weil jemand war auf die geile Idee gekommen diesen Namen zu nehmen, obwohl es in Screens.pas sowas schon seit Jahrzehnten gab)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#6

AW: Handle Count erhöht sich

  Alt 29. Jul 2020, 15:54
Das man das Event Handle freigeben muss war mir nicht bekannt.
Steht (ganz unten) in den Remarks zur API-Funktion MSDN-Library durchsuchenCreateEvent:
Zitat:
Use the CloseHandle function to close the handle. The system closes the handle automatically when the process terminates. The event object is destroyed when its last handle has been closed.

Zitat:
Frage mich nur warum hat FastMM4 und oder EurekaLog das nicht erkannt.
Simpel: Weil sowas nicht von einem Delphi Memory Manager (MM) erfasst wird bzw. werden kann. Gleiches gilt für Icons, die man mit LoadIcon oder LoadImage lädt. Die gehen am Delphi MM vorbei, und daher bekommt der davon nix mit.

Grüße
Dalai
Ok. Danke.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 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