WebBrowser im BackgroundWorker - GetElementById funktioniert nicht

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    WebBrowser im BackgroundWorker - GetElementById funktioniert nicht

    Hallo,
    Ich habe ein programm geschieben.
    das ungefähr so aufgebaut ist::

    ich starte mit einem Button einen BackgroundWorker
    Und dieser Ruft eine SUb auf

    Also ugf so:.

    VB.NET-Quellcode

    1. Button1.Click
    2. BackGroundWorker.RunWorkerAsync
    3. BackGroundWorker.DoWork
    4. Call ToSub
    5. Sub ToSub
    6. Webbrowser.Navigate("TESTBLA.DE")
    7. System.Threading.Thread.Sleep(5000)
    8. Webbrowser.GetElementById("TEXTFELD").SETATRIBUTE("VALUE","LOL")
    9. End Sub

    Ich bekomme den Fehler: Die Angegebene Umwandlung ist ungültig -.- ?!!
    WTF wenn ich das ganze in nem normalem Button Klick mache gehts

    VB.NET-Quellcode

    1. also Button2.Click
    2. Webbrowser.Navigate("TESTBLA.DE")
    3. System.Threading.Thread.Sleep(5000)
    4. Webbrowser.GetElementById("TEXTFELD").SETATRIBUTE("VALUE","LOL")

    klappt alls proma..

    also was ist das problem ?!! -.-

    Edit by hal2000:
    - Threadtitel aussagekräftig formuliert. Bitte in Zukunft gleich so!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Der WebBrowser ist eine Komponente, die durch COM bereitgestellt wird. Das bedeutet, dass andere Threads, die die Komponente nicht erstellt haben, nicht darauf zugreifen dürfen. Lösung: Marshalle alle Aufrufe an den WebBrowser an den erstellenden Thread. Dadurch geht dir die Parallelität leider wieder verloren. Du kannst auch versuchen, die Komponente in einem eigenen Thread zu erstellen - dann musst du aber eine Nachrichtenschleife dafür bereitstellen und weiterhin alle Aufrufe dorthin dirigieren.
    Gruß
    hal2000