Ein Objekt restlos entfernen

12/10/2009 - 13:37 von Tamara Mikes | Report spam
Salü alle zusammen

Ich habe eine Klasse mPDF und darin eine Methode MakeIt2PDF. In dieser
Methode wird ein neuer Prozess von PDFCreator erzeugt.

Wenn ich meine Implementierung laufen lasse, schaut das ungefàhr so aus:

NeuesPDF(string Dateiname){
mPDF mp = new mPDF;
mp.MakeIt2PDF(Dateiname);
mp = null;
}

Wenn ich das ausführen lasse, wird wohl mein PDF erstellt. Aber der Prozess
PDFCreator.exe bleibt im Taskmanager stehen.

Wie bringe ich mp vollstàndig aus dem Speicher raus?

Hintergrund ist, dass wenn NeuesPDF ein zweites Mal aufgerufen wird, erhalte
ich eine Fehlermeldung, dass PDFCreator nicht eine zweite Instanz erzeugen
darf.

In welcher Richtung muss ich die Lösung für mein Problem suchen gehen?

Vielen Dank für Hinweise
Gruss Tamara
 

Lesen sie die antworten

#1 Thorsten Doerfler
12/10/2009 - 14:05 | Warnen spam
Tamara Mikes schrieb:
Ich habe eine Klasse mPDF und darin eine Methode MakeIt2PDF. In dieser
Methode wird ein neuer Prozess von PDFCreator erzeugt.

Wenn ich meine Implementierung laufen lasse, schaut das ungefàhr so aus:

NeuesPDF(string Dateiname){
mPDF mp = new mPDF;
mp.MakeIt2PDF(Dateiname);
mp = null;
}

Wenn ich das ausführen lasse, wird wohl mein PDF erstellt. Aber der Prozess
PDFCreator.exe bleibt im Taskmanager stehen.

Wie bringe ich mp vollstàndig aus dem Speicher raus?



Indem Du die cClose Methode des PDFCreator COM Objekts aufrufst, wie es
in den Beispielen auch beim Schließen des Formulars gemacht wird:

_PDFCreator.cClose();
System.Runtime.InteropServices.Marshal.ReleaseComObject(_PDFCreator);
GC.Collect();

Normal sollte Deine Klasse mPDF hier das IDisposable Interface
implementieren, wo o.g. von der Dispose Methode erledigt wird. Im Code
müsstest Du dann bevor Du die Referenz auf null setzt, mp.Dispose()
aufrufen, um den PDFCreator sauber abzuràumen.

Schau Dir dazu bitte auch noch einmal die Beispiele an, die mit dem
PDFCreator installiert werden. Ich kenne Deine konkrete Implementierung
von mPDF nicht und kann daher auch nicht spezifischer darauf eingehen.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen