Laden...

Arbeiten mit WebBrowser kostete viel CPU

Erstellt von userid15621 vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.151 Views
U
userid15621 Themenstarter:in
104 Beiträge seit 2009
vor 8 Jahren
Arbeiten mit WebBrowser kostete viel CPU

Guten Morgen.

Ich arbeite mit der Komponenten WebBrowser (hauptsächlich mit "NAVIGATE").

In meinen CODE rufe ich ca. 100x diese Funktion (in eine Schleife). Leider ist die CPU Auslastung sehr hoch liegt bei ca. 30%.

Wie kann ich mit WebBrowser arbeiten und die CPU auslastung verringern?

5.658 Beiträge seit 2006
vor 8 Jahren

Hi HL2002,

du könntest den Profiler verwenden, und schauen, wo es klemmt. Dann kannst du diese Stelle evtl. optimieren. Zuerst einmal solltest du herausbekommen, ob es an C# liegt oder am Browser (z.B. Javascript).

Christian

Weeks of programming can save you hours of planning

W
872 Beiträge seit 2005
vor 8 Jahren

Welche IE Version benutzt Du? (Request.Browser.Version.ToString()).
Vielleicht kannst Du auf eine neue IE Version aktualisieren oder einen anderen Browser nehmen? Kannst Du die Web-Seiten, die dahinter stehen, optimieren oder ist das für Dich eine Black Box?

F
10.010 Beiträge seit 2004
vor 8 Jahren

Naja, 100 mal nen Webbrowser auf eine Seite aufrufen und sich wundern das dann der Prozessor Arbeiten muss....

U
userid15621 Themenstarter:in
104 Beiträge seit 2009
vor 8 Jahren

Frage ist was ist daran falsch wenn ich eine Komponente 100 mal benutze?
Wie kann ich einen Profiler auf einen Browser anwenden 😦 Ich hatte früher einen Profiler auf SQL angewendet 😃

16.834 Beiträge seit 2008
vor 8 Jahren

Was er meint, dass man sich eben nicht wundern muss, dass die Last der CPU hoch geht, wenn man 100 mal in wenigen Sekunden eine Webseite anfragt; und da hat er recht.
Wie man den Profiler in VS verwendet: dazu findest Du mit Sicherheit hunderte ausführliche Tutorials per Google.

U
userid15621 Themenstarter:in
104 Beiträge seit 2009
vor 8 Jahren

Ich rufe aber nicht 100x diese Methode paralel auf, sondern eben nach einander.

Ich mache mich schlau bezüglich Profiler.

127 Beiträge seit 2015
vor 8 Jahren

Vielleicht zeigst du uns einfach mal besagte Schleife damit wir uns besser ein Bild machen können wie die Problemstelle aussieht.

Grundsätzlich stimme ich meinen Vorredner aber zu, bis jetzt bin ich auch nicht sonderlich überrascht über die CPU Auslastung.

D
985 Beiträge seit 2014
vor 8 Jahren

Wenn die Schleife den UI-Thread blockiert, dann ist diese Auslastung auch eher zu erwarten.

U
userid15621 Themenstarter:in
104 Beiträge seit 2009
vor 8 Jahren

            foreach (DataGridViewRow rw in dataGridView.Rows)
            {

string prepare_url = @"http://www.ebay____****/" + rw.Cells["Artikelnummer"].Value.ToString();
                webBrowser1.Navigate(prepare_url);
                Wait("");//Warte bis in WebBrowser ein HTMLCODE gelistet wurde....

}

Wait...(Beispiel).

               while (string.IsNullOrEmpty(html) || html.ToLower().IndexOf(Suchwert1.ToLower()) == -1 || html.ToLower().IndexOf(Suchwert2.ToLower()) == -1)
                {

                    if (webBrowser1.Document != null && webBrowser1.Document.Body != null && webBrowser1.Document.Body.OuterHtml != null)
                    {
                        html = webBrowser1.DocumentText;
                    }

Application.DoEvents();
}



D
985 Beiträge seit 2014
vor 8 Jahren

Wenn du dir die Doku anschaust, dann solltest du dir den Event DocumentCompleted einmal genauer anschauen.

16.834 Beiträge seit 2008
vor 8 Jahren

Dir ist schon bewusst, dass eBay ne WebAPI bietet und jedenfalls der Interagieren von Anwendungen über die reguläre Webseite (sofern sie es jedenfalls können) untersagt? 😉

Und wer DoEvents verwendet; der hat definitiv irgendein Murks im Code.
Warum DoEvents Mist ist!

Eigentlich kann man das erwarten, wenn derjenige schon ein paar Jahre C# kennt (genauso wie die richtigen Forentags zu verwenden, was ich mal korrigiert hab) 😉
Ansonsten ist Sir Rufo nichts hinzuzufügen.

U
userid15621 Themenstarter:in
104 Beiträge seit 2009
vor 8 Jahren

EbaY war nur ein Beispiel, weil ich den genanuen Projekt nicht nehnen möchte.
In diesen Projekt wird änlich wie bei Ebay mit Artikelnummern gearbeitet (wie beim jeden Online Shop).

Shaue ich mir an....
https://msdn.microsoft.com/de-de/library/system.windows.forms.webbrowser.documentcompleted%28v=vs.110%29.aspx