AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Richtiges Beenden/Freigeben einer (Delphi) DLL
Thema durchsuchen
Ansicht
Themen-Optionen

Richtiges Beenden/Freigeben einer (Delphi) DLL

Ein Thema von OlliWW · begonnen am 21. Jun 2022 · letzter Beitrag vom 21. Jun 2022
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#1

AW: Richtiges Beenden/Freigeben einer (Delphi) DLL

  Alt 21. Jun 2022, 13:58
Könnte es etwas ähnliches sein? https://www.delphipraxis.net/189047-[erledigt]-interface-aus-dll-per-latebinding-freelibrary-toedlich.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
OlliWW

Registriert seit: 31. Aug 2011
159 Beiträge
 
#2

AW: Richtiges Beenden/Freigeben einer (Delphi) DLL

  Alt 21. Jun 2022, 14:10
Ja ich glaube das ist exakt mein Problem.

Ich habe nämlich auch vor ein PluginSystem zu bauen bzw. bin (bis auf dieses Problem) schon fertig. Auf das Problem bin ich auch nur gestoßen weil das ganze als Dienst läuft, der sich automatisch aktualisiert. Beim aktualisieren passiert folgendes:
Dienst beendet sich, Dienst startet sich neu, liefert die neuen DLLs aus (hängen als Resource dran) und läd die DLLs.

Mein Problem dabei ist nur, dass die DLLs beim beenden des Dienstes zu langsam freigegeben werden, wenn man FreeLibrary nicht nutzt, weswegen die DLLs beim Dienst-Neustart nicht überschrieben werden können.

Aber gut, dann denke ich nutze ich deine Lösung: Ich ignoriere FreeLibrary einfach und löse das andere Problem durch einen "Abwarten" Timer

Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Richtiges Beenden/Freigeben einer (Delphi) DLL

  Alt 21. Jun 2022, 14:14
Aber was ist denn da (und hier) letztendlich rein technisch das Problem (gewesen)?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
OlliWW

Registriert seit: 31. Aug 2011
159 Beiträge
 
#4

AW: Richtiges Beenden/Freigeben einer (Delphi) DLL

  Alt 21. Jun 2022, 14:16
Dass FreeLibrary dazu führt, dass ich mit Zugriffsverletzungen zugeworfen werde.

Da will man ordentlich sein dann ists auch nicht gut
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
717 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Richtiges Beenden/Freigeben einer (Delphi) DLL

  Alt 21. Jun 2022, 14:35
Wo steht da dass FreeLibrary Fehler zuwirft?
Das ist Unsinn. Ich verwende FreeLibrary für meine Plugins und es knallt nie.
Jedes meiner Plugins hat Fenster und Threads. Alles wird ordentlich aufgeräumt und dann wird die Dll freigegeben. Das funzt.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Richtiges Beenden/Freigeben einer (Delphi) DLL

  Alt 21. Jun 2022, 15:15
Dass FreeLibrary dazu führt, dass ich mit Zugriffsverletzungen zugeworfen werde.

Da will man ordentlich sein dann ists auch nicht gut
Ja, aber warum? Das bedeutet immer noch, dass in deinem Code was verkehrt ist.
Du kannst grundsätzlich davon ausgehen, dass Windows API funktionen fehlerfrei* sind.

*) Was ist schon fehlerfrei. Aber in 99,99% aller Fälle liegt es nicht an der Windows API, sondern am Programmierer.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:45 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