NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Problém s RAM - webbrowser

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Adam Gajdečka:27.2.2016 14:16

Ahoj, prosím o radu.
C#

používám webbrowser a po procházení webů po 300 stránkách mi program zabírá 1000 MB v RAM paměti. Čím více projdu stránek, tím více paměť roste. Program se potom zasekne, když je paměť plná.

Pro procházení používám webbrowser1.Na­vigate(url);

Nepotřebuji nějakou cache webu ani historii. Prosím o radu. Díky moc

 
Odpovědět
27.2.2016 14:16
Avatar
Odpovídá na Adam Gajdečka
Michal Žůrek - misaz:27.2.2016 23:15

nevím sice proč procházíš 300 stránek s WebBrowserem, ale v podstatě můžeš vždycky WebBrowser smazat a založit nový.

 
Nahoru Odpovědět
27.2.2016 23:15
Avatar
Adam Gajdečka:28.2.2016 1:21

Dobře. A prosím, jak vymažu browser a udělám nový se stejným názvem? Diky

můj se jmenuje webBrowser1

Nový založím takto?

WebBrowser webBrowser1= new WebBrowser();
 
Nahoru Odpovědět
28.2.2016 1:21
Avatar
Luboš Běhounek Satik:28.2.2016 8:10

Zobrazujes nekde tech 300 stranek? Nebylo by lepsi pouzit jen WebRequest? :)

Nahoru Odpovědět
28.2.2016 8:10
https://www.facebook.com/peasantsandcastles/
Avatar
Adam Gajdečka:28.2.2016 9:49

Načítám odkazy z txt a pak zobrazím odkaz a vložím tam text a odešlu a tak jedu dál a dál. Nepotřebuji, aby se to někde zobrazovalo. Ale WebRequest jsem nikdy nepoužil. Nevím jak na to.

while (!soubor.EndOfStream)
                       {


                           akt_radek = soubor.ReadLine();

                           DalsiWeb();

                                    Vlozit();

A potom:

if (!webBrowser1.IsBusy)
                 {

                      try
                      {
                          webBrowser1.Document.GetElementById("commentText").SetAttribute("value", tb_spam_Text.Text);
                          HtmlElementCollection elc = this.webBrowser1.Document.GetElementsByTagName("input");



                          foreach (HtmlElement el in elc)


                          {
                              if (el.GetAttribute("type").Equals("submit"))
                              {
                                  el.InvokeMember("Click");

                              }

                          }

                          provedeno++;
                          lb_radky.Text = provedeno.ToString();

                      }


                      catch
                      {

                          DialogResult problem = MessageBox.Show("Problem", "",                        MessageBoxButtons.OKCancel);
                          neprovedeno++;
                          lb_problem_radku.Text = neprovedeno.ToString();
                          if (problem == DialogResult.Cancel)
                          {
                              tim_OK.Stop();


                          }


                      }
 
Nahoru Odpovědět
28.2.2016 9:49
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:28.2.2016 14:48

Podívej se na použití WebClient.Dow­nloadString(string url)
A musíš používat using bloky.

Nahoru Odpovědět
28.2.2016 14:48
the cake is a lie
Avatar
Odpovídá na Petr Čech
Michal Žůrek - misaz:28.2.2016 14:57

nemusí používat Using bloky.... Může si volat Dispose() ručně, když chce....

 
Nahoru Odpovědět
28.2.2016 14:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.