Diskuze: Problém s RAM - webbrowser

C# .NET .NET (C# a Visual Basic) Problém s RAM - webbrowser American English version English version

Avatar
Adam Gajdečka Vedlejší:

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. února 14:16
Avatar
Odpovídá na Adam Gajdečka Vedlejší
Michal Žůrek (misaz):

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. února 23:15
Nesnáším {}, proto se jim vyhýbám.
Avatar
Adam Gajdečka Vedlejší:

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. února 1:21
Avatar
Luboš Běhounek (Satik):

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

Nahoru Odpovědět 28. února 8:10
:)
Avatar
Adam Gajdečka Vedlejší:

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. února 9:49
Avatar
Petr Čech (czubehead):

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

Nahoru Odpovědět  -1 28. února 14:48
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
Michal Žůrek (misaz):

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

Nahoru Odpovědět  +1 28. února 14:57
Nesnáším {}, proto se jim vyhýbám.
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.