C++ / CLI Problem

{Eve}

Mitglied
Hallo ,

ich habe mit C++/CLI einen Wrapper für alten C++ Code geschrieben und erzeuge als Ergebnis eine DLL (.NET). Diese DLL wird wiederrum in einer C# Applikation benutzt.

Der Wrapper verfügt über zwei Funktionen die über ein Objekt zur Verfügung gestellt werden. Jede der beiden Funktionen verbraucht in dem dahinterliegenden C++ Code sehr viel Speicher.

Bisher funktionierte das ganze ohne Probleme, allerdings hat sich jetzt durch eine Änderung, welche ich in der C# Applikation gemacht habe, ein seltsamer Effekt ergeben.

Und zwar ist es so dass wenn ich eine der beiden Funktionen einzeln ausführe diese ohne Probleme funktioniert, wenn ich sie aber jetzt beide direkt nacheinander ausführe dann stürzt das Programm bei der Durchführung der zweiten Funktion mit einer SEH Exception ab.
Die Exception beschreibt einen "Unspecified Error"...

Bisher tippe ich darauf das es mit der GarbageCollection unter .NET zu tun hat, da die Funktionen einzeln ja funktionieren.

Vielleicht habe ich in dem C++/CLI Wrapper etwas das unmanaged ist auf eine falsche Art und Weise erstellt.
Hat vielleicht jemand von euch einen Ratschlag wo das Problem vielleicht liegen könnte?
 
Hallo,

ich habe das Problem inzwischen gelöst.

Und zwar war es einfach so das die zwei Funktionen zuviel Speicher allokiert haben.
Mehr als ich bei .NET unter 32 Bit zur Verfügung habe.

Die eigentliche Exception welche die SEH Exception auslöste wurde in der Vector Klasse beim Allokieren ausgelöst und hatte eine Meldung mit Bad_Alloc.

Bei einem bin ich mir allerdings noch nicht ganz sicher.
Kann es sein das bei einer Single Thread Anwendung jegliche Aktionen des GarbageCollectors nicht ausgeführt werden wenn sich das Programm in dem Unmanaged Kontext befindet?

Gruss
 
Kann schon sein. Aber man kann ja nachhelfen:
Regelmäßig zurück ins Gemanagte und gc.collect aufrufen (oder so ähnlich heißt das).

Gruß
 
Ja richtig

Code:
GC.Collect(GC.MaxGenerations);

Wollte mich eigentlich auch nur mit euch abgleichen, ob ihr die selben Erfahrungen gemacht habt wie ich.
 
Zurück