![]() |
,net Framework entladen nach Beendigung COM
Hi
Wir verwenden in Delphi eine TLB, die per COM .NET Funktionen in Delphi einbindet. Da wir diese Funktionen nicht immer brauchen, wollen wir nach Beendigung (Freigabe aller COM Funktionen) das geladene .Net Framework auch beenden, da dieses unnötig viel Speicher benötigt. Wie kann man das machen ?? Wir haben hier nichts gefunden. |
AW: ,net Framework entladen nach Beendigung COM
Du hast leider keine Möglichkeit. Der entscheidende Satz steht auf der
![]() Zitat:
|
AW: ,net Framework entladen nach Beendigung COM
Wenn du wirklich Probleme mit dem Speicher hast gibts 2 Möglichkeiten:
a, Erstellte deine Exe als 64-Bit Version b, Lagere die .NET-Anbindung in eine eigene Exe aus. |
AW: ,net Framework entladen nach Beendigung COM
Hi
Danke für die Antworten. Die Vorschläge sind leider nicht so einfach umsetzbar. Wir arbeiten an der 64Bit Version, diese ist aber derzeit noch nicht spruchreif. Und eine eigene Exe ist nicht das was unsere Kunden wünschen. Trotzdem danke. lg |
AW: ,net Framework entladen nach Beendigung COM
Hmm..
Etwas durch die Brust ins Auge: ;) Packe die TLBs und verwendeten Funktionen in ein separate DLL. Dann sollte das .Net doch auch entladen werden, wenn die DLL entladen wird.. |
AW: ,net Framework entladen nach Beendigung COM
Hallo Holger
Leider verwenden wir auch GUI Controls. Hier wird es dann interessant :) |
AW: ,net Framework entladen nach Beendigung COM
Zitat:
|
AW: ,net Framework entladen nach Beendigung COM
Hi
Eine Überlegung wäre eine eigene Exe, die wir hijacken und als MDI Fenster in der Applikation anzeigen. Wollte den Aufwand aber vermeiden. Wir haben auch noch ein Verhalten in den TOleServer festgestellt, das die Situation verschärft. Die TLB verwendet für manche Klassen OLEServer Ableitungen. Diese benötigen wir, um Events einzuhängen. Wenn ich nun die Klassen freigebe, wird der Refcount der eingebetteten FEventDispatch Instanz nicht mehr 0 und es bleiben Speicherlecks übrig. Das ganze passiert, da im Queryinterface einmal das Interface mit IsEqualIID mit der IID des Interfaces eingehängt wird (ist ja auch korrekt), aber dann die Methode nochmal aufgerufen wird, bei der zwar in der GUID der gleiche D1 Wert, aber D2-D3 = 0 sind. Dadurch wird ein zusätzliches Interface eingehängt (RefCount = 2) aber beim Beenden wird nur einmal das Release aufgerufen. |
AW: ,net Framework entladen nach Beendigung COM
Zitat:
|
AW: ,net Framework entladen nach Beendigung COM
Zitat:
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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