Indexon India Ответов: 1

Концепция потоковой передачи для улучшения процесса навигации по URL-адресам webbrowsers в C#


Я разработал простую проверку идентификаторов windows forms с помощью приложения C#, чтобы проверить набор заданных идентификаторов, действительных или нет, Перейдя на веб - страницу с помощью элемента управления webbrowser и получив ответ, и все работает нормально, это занимает 40-60 секунд для 20 идентификаторов.один за другим.Теперь я хочу ускорить тот же процесс, используя концепцию Advanced threading в C# .

мой рабочий код, как под .

private void button2_Click(object sender, EventArgs e)
       {
           string url = "https://idscheckingsite.com";
           WebBrowser wb = new WebBrowser();
           wb.ScriptErrorsSuppressed = true;
           wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Final_DocumentCompleted);
           wb.Navigate(url);

       }



private void Final_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
       {
           WebBrowser wbs = sender as WebBrowser;
           wbs.Document.GetElementById("pannumber").InnerText = ListsofIds[ids];
           wbs.Document.GetElementById("frmType1").SetAttribute("value", "24Q");
           HtmlElement btnlink = wbs.Document.GetElementById("clickGo1");
           btnlink.InvokeMember("Click");

           //string response = wbs.DocumentText;
           wbs.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(Final_DocumentCompleted);
           wbs.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Final_result);
       }


private void Final_result(object sender, WebBrowserDocumentCompletedEventArgs e)
       {

           WebBrowser wbResult = sender as WebBrowser;

           string status = wbResult.Document.GetElementById("status").InnerText;
           string name = wbResult.Document.GetElementById("name").InnerText;

           wbResult.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(Final_result);
           wbResult.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Final_DocumentCompleted);

           DataRow dr = dt.NewRow();

           dr[0] = PANNumber[ids];
           dr[1] = status;
           dr[2] = name;

           dt.Rows.Add(dr);
           ++ids;

           if (ids < 20)
               wbResult.Navigate(vurl);
           else
           {
               dataGridView1.DataSource = dt;
           }
       }


Как повысить производительность до максимума, используя потоковую обработку в C# . Пожалуйста, помогите мне его срочно . заранее спасибо.

- Мартин

Что я уже пробовал:

попытался с помощью окна управления WebBrowser брать 44 - 60 секунд за 20 проверки документов .

Richard MacCutchan

Нет никакой гарантии, что резьба будет иметь какое-либо значение. Сначала вам нужно выяснить, где находится узкое место. Если большая часть задержки связана с сетевым трафиком, то вы мало что можете сделать для повышения скорости обработки.

И, кстати, это ни в коей мере не срочно для здешних людей.

1 Ответов

Рейтинг:
0

#realJSOP

Если бы это был я, я бы отправил HTTP-запросы и оценил не визуализированный ответ, а не ждал, пока веб-страница будет визуализирована. Вы можете попробовать поместить каждый запрос в поток.