Hallo zusammen,
in unserer Programmkonstellation wird aus einer Delphi (Win32.exe) bzw. deren Modulen C#-Dlls verwendet. Zunehmend verwirklichen wir die Interaktion zwischen den Sprachen seitens C# über nicht registrierte COM-Objekte, für Callbackfuntionen stellen wir in Delphi triviale Interface-Objekte bereit. Bei Verwendung von Callbackfunktionen haben wir nun das Problem, das beim Aufruf des C#-Garbage-Collectors die zugehörige Delphi DLL bereits entladen wurde, d.h. eventuelle Referenzen im Garbage-Collector auf Speicherleichen verweisen. Wird der Garbage-Collector beim Schließen des Programms final geleert, so kommt je nach intensität der Programmnutzung in Delphi eine Zugriffsverletzung (Beim Debuggen in C# natürlich nicht!). Ich gehe davon aus, dass im Garbage-Collector auch Referenzen auf Delphi-Objekte gehalten werden.
Meine Frage:
Lassen sich Referenzen so definieren, dass diese nicht vom Garbage-Collector verwaltete werden?
Gruß
in unserer Programmkonstellation wird aus einer Delphi (Win32.exe) bzw. deren Modulen C#-Dlls verwendet. Zunehmend verwirklichen wir die Interaktion zwischen den Sprachen seitens C# über nicht registrierte COM-Objekte, für Callbackfuntionen stellen wir in Delphi triviale Interface-Objekte bereit. Bei Verwendung von Callbackfunktionen haben wir nun das Problem, das beim Aufruf des C#-Garbage-Collectors die zugehörige Delphi DLL bereits entladen wurde, d.h. eventuelle Referenzen im Garbage-Collector auf Speicherleichen verweisen. Wird der Garbage-Collector beim Schließen des Programms final geleert, so kommt je nach intensität der Programmnutzung in Delphi eine Zugriffsverletzung (Beim Debuggen in C# natürlich nicht!). Ich gehe davon aus, dass im Garbage-Collector auch Referenzen auf Delphi-Objekte gehalten werden.
Meine Frage:
Lassen sich Referenzen so definieren, dass diese nicht vom Garbage-Collector verwaltete werden?
Gruß
Comment