vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
GeckoFX in einem Thread starten und beenden (+ Profile Ordner löschen) 
Autor: Marco_83
Datum: 15.12.15 12:13

Hallo zusammen,
vielleicht kann mit hier jemand weiterhelfen. Komme einfach nicht weiter

Ich nutze die GeckoFX Engine in VS2010 (VB.NET) und möchte den Webbrowser in einem Thread starten und beenden können. Das starten funktioniert auch. Aber wenn ich den Thread beende, kann ich den Profile Ordner von der GeckoFX Engine nicht löschen.

Anbei mal eine Veranschaulichung was ich bis jetzt habe.


1. per Button Klick den Thread starten:
Private Sub btn_start_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles btn_start.Click
 
        trd1 = New Thread(AddressOf ThreadTask)
        trd1.Start()
 
End Sub
2. Start des Threads
Dim GeckoWebBrowser1 As GeckoWebBrowser
Private Sub ThreadTask()
 
        GeckoWebBrowser1 = New GeckoWebBrowser
        If Me.InvokeRequired Then
           Me.Invoke(Sub() ThreadTask())
           Return
        End If
        Dim ProfileDirectory As String = My.Application.Info.DirectoryPath & _
          "\xulrunner\GeckoFX_cache\" & random_path() & "\"
 
        If Not Directory.Exists(ProfileDirectory) Then
            Directory.CreateDirectory(ProfileDirectory)
        End If
        Xpcom.ProfileDirectory = ProfileDirectory
 
        Dim xrPath As String = _
          System.Reflection.Assembly.GetExecutingAssembly.Location
        xrPath = My.Application.Info.DirectoryPath & "\xulrunner"
 
        Xpcom.Initialize(xrPath)
 
        GeckoWebBrowser1.Location = New System.Drawing.Point(198, 38)
        GeckoWebBrowser1.Name = "GeckoWebBrowser1"
        GeckoWebBrowser1.Size = New System.Drawing.Size(1371, 824)
        GeckoWebBrowser1.TabIndex = 4
        GeckoWebBrowser1.UseHttpActivityObserver = False
        Me.Controls.Add(GeckoWebBrowser1)
        Me.Refresh()
        GeckoWebBrowser1.Navigate("http://google.com/")
 
End Sub
3. Thread beenden Button
Private Sub btn_ende_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles btn_ende.Click
        beende_geckofx(GeckoWebBrowser1)
End Sub
4. Aufruf der Sub beende_geckofx mit Übergabe des GeckoWebBrowser1
Sub beende_geckofx(ByVal GeckoWebBrowser1)
 
        GeckoWebBrowser1.Dispose()
        GeckoWebBrowser1 = Nothing
        Xpcom.Shutdown()
        trd1.Abort()
 
End Sub
Das starten funktioniert und die Webseite wird auch geladen. Beim beenden wird keine Fehlermeldung ausgeworfen, aber ich kann wie gesagt den Profile Ordner nicht löschen, da dieser noch von einem Prozess verwendet wird.

Wenn ich das ganze erneut starten möchte kommt folgende Fehlermeldung:
Xpcom.Initialize(xrPath)
 
System.AccessViolationException wurde nicht von Benutzercode behandelt.
HResult=-2147467261
Message=Attempted to read or write protected memory. This is often an _
  indication that other memory is corrupt.
InnerException:
Irgendwie muss das doch möglich sein?! Vielleicht habe ich auch nur eine Kleinigkeit übersehen, aber ich seh den Wald vor lauter Bäumen nicht mehr ;)

Vielen Dank im vorraus schon fürs durchlesen und eventuelle Hilfe!

MfG
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
GeckoFX in einem Thread starten und beenden (+ Profile Ordne...1.797Marco_8315.12.15 12:13

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel