Warten auf WebBrowser ajax Inhalt

8

Ich möchte die Ausführung meines Threads anhalten, bis ein bestimmtes Div über Ajax in eine WebBrowser-Instanz geladen wurde. Offensichtlich kann ich ständig nach der Anwesenheit dieses Divs suchen, indem ich etwas wie folgt mache:

%Vor%

Wenn Sie jedoch den Thread, in dem sich der Browser befindet, zwischen den Loops schlafen lassen, wird der Browser erst vom tatsächlichen Laden des Inhalts blockiert. Es scheint daher, dass ich die Methode Browser.Navigate in einem separaten Thread ausführen muss - ich kann dann weiter auf das Vorhandensein des div warten / warten, während die WebBrowser-Instanz weiterhin die URL lädt, zu der ich sie aufgefordert habe.

Meine Versuche sind jedoch gescheitert, und ich würde Wert darauf legen, wie ich darüber vorgehen sollte. Ich dachte, einfach einen neuen Thread mit new Thread(() => { Browser.Navigate(url); }); zu versenden würde funktionieren, aber danach wird nichts geladen und der Browser.ReadyState bleibt als 'Uninitialized'. Ich gehe davon aus, dass ich falsch verstehe, wie man mit C # Verfahren wie diese richtig einfädelt und würde einen Ratschlag wertschätzen!

    
JoeR 25.09.2010, 16:16
quelle

3 Antworten

5

Blockieren Sie nicht die Nachrichtenpumpe des Hauptfadens. Da der Browser eine STA-Komponente ist, kann xmlhttprequest keine Ereignisse aus dem Hintergrundthread auslösen, wenn Sie die Nachrichtenpumpe blockieren. Sie können nicht in einem Hintergrundthread navigieren. Der Windows Forms-Wrapper des Webbrowsers ActiveX unterstützt keinen Zugriff von anderen Threads als dem UI-Thread. Verwenden Sie stattdessen einen Timer.

    
Sheng Jiang 蒋晟 25.09.2010, 18:30
quelle
8

Folgendes sollte funktionieren,

%Vor%

Das obige hat für mich funktioniert ...

    
Ponson 31.10.2010 15:51
quelle
1

Sie können zum Beispiel einen Text in Körper finden:

%Vor%     
Federico Aineseder 01.12.2016 12:48
quelle

Tags und Links