Laden...

Webbrowser - Dokument wieder freigeben

Erstellt von thomae vor 17 Jahren Letzter Beitrag vor 16 Jahren 3.835 Views
T
thomae Themenstarter:in
94 Beiträge seit 2006
vor 17 Jahren
Webbrowser - Dokument wieder freigeben

Hallo Leute

ich stelle in einer Form mit eingebettetem WebBrowser ein PDF dar. Nachdem die Form geschlossen wird möchte ich das Dokument vom System löschen. Dazu habe ich folgendes gemacht.


browserForm.Dispose();
browserForm = null;
GC.Collect();
System.IO.File.Delete(pathPDF + fileNamePDF);

Leider kommt dabei eine IOException da das Dokument noch immer alloziert ist..

Was sol ich da tun?

A
72 Beiträge seit 2006
vor 17 Jahren

vor allem nit mit dem GC arbeiten. Greif auf das dokument direkt zu, und sag close(). wäre wohl am einfachsten

gruß apollo

edit: achso löschen, hm gute frage, hab ich auch noch nie gemacht ^^

T
thomae Themenstarter:in
94 Beiträge seit 2006
vor 17 Jahren

Auf das Dokument kann ich soweit ich das sehe nicht zugreifen um es zu schliessen..

Wiso nicht mit GC arbeiten? Wollte forcieren, dass er aufräumt weil ich mir gedacht habe dass irgend ein Objekt das File noch immer alloziert hat..

irgend eine andere Idee

G
13 Beiträge seit 2006
vor 17 Jahren

Vielleicht kannst du bevor die Form schließt noch auf den eingebetteten WebBrowser zugreifen und ihm irgendwie sagen, dass er das Dokument schließen soll.

T
thomae Themenstarter:in
94 Beiträge seit 2006
vor 17 Jahren

Nö das Dokument kann nicht geschlossen werden. Aber ich habe es geschafft, habe einfach alle Objekte auf null gesetzt und mit GC.Collet() aufgeräumt.

Danke für Eure Unterstützung

E
255 Beiträge seit 2004
vor 16 Jahren

Hallo Leute,

ich hab ungefähr das gleiche Problem.
Ich zeige in meinen WebBrowser ein PDF-Dokument an, welches bei mir lokal liegt. Und das seit heute früh, immer wenn das Programm gestartet wird.

Und jetzt kommt die Fehlermeldung weiter unten.

Dispose oder GC.Collect(); wie in diesen Beitrag weiter oben steht, funktioniert das nicht.

Jemand ne Idee?

mfg

630 Beiträge seit 2007
vor 16 Jahren

Soweit ich weis wird das AcrobatReader PlugIn in einem extra Prozess gestartet welcher dann in den IE eingehängt wird. Es könnte sein das du dein Programm schließt aber der Prozess vom Reader weiterläuft (schau mal im Task-Manager).

gruss
tscherno

To understand recursion you must first understand recursion

http://www.ilja-neumann.com
C# Gruppe bei last.fm

2.760 Beiträge seit 2006
vor 16 Jahren

Könnte nicht nur, ist so.
Außerdem kann man den Reader einfach per ActiveX benutzen ohne dafür den Webbrowser zu benutzen.

E
255 Beiträge seit 2004
vor 16 Jahren

Könnte nicht nur, ist so.
Außerdem kann man den Reader einfach per ActiveX benutzen ohne dafür den Webbrowser zu benutzen.

Aha, und wie?

Mich würde noch interresieren was an GC Sache dran ist.

mfg

2.760 Beiträge seit 2006
vor 16 Jahren

Choose Toolbox Items -> COM -> Adobe PDF Reader. Und aufs Formular.

E
255 Beiträge seit 2004
vor 16 Jahren

Diese Fehlermeldung bekommt man, wenn eine andere Version des Readers installiert ist, als die mit der man entwickelt.


System.Runtime.InteropServices.COMException (0x80040154): Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
   bei System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
   bei System.Windows.Forms.AxHost.CreateWithoutLicense(Guid clsid)
   bei System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
   bei System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
   bei System.Windows.Forms.AxHost.CreateInstance()
   bei System.Windows.Forms.AxHost.GetOcxCreate()
   bei System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
   bei System.Windows.Forms.AxHost.CreateHandle()
   bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   bei System.Windows.Forms.AxHost.EndInit()

Ich will den Benutzer die Adobe Reader Version aber nicht vorgeben.
Ich werde mich wohl doch eher auf die Tasks konzentrieren.

2.760 Beiträge seit 2006
vor 16 Jahren

Du kannst ja die passenden DLLs mit ausliefern.
Allerdings weiß ich da nicht wie es mit den Lizenzrechtlichen Sachen aussieht.