我正在研究一個應用程序,並且我想創建多個線程,每個線程都必須創建WebBrowser
,這些使用方法中的每個WebBrowser
使用方法webBrowser_DocumentCompleted
。如何在許多Web瀏覽器上使用不同的事件
每個創建的WebBrowser
實例如何擁有自己的DocumentCompleted
處理程序,而不是使用相同的webBrowser_DocumentCompleted
方法。
我解釋一下:
在一種情況下,用一個單一的網絡瀏覽器的操作
int a = 0;
private void button1_Click(object sender, EventArgs e)
{
methode1();
}
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (a == 1) methode2(wb);
if (a == 2) methode2(wb);
}
public void methode1()
{
webBrowser.Navigate("http://www.test.com");
a = 1;
}
public void methode2()
{
HtmlElement txt1 = webBrowser1.Document.GetElementById("tesxtbox1");
txt1.SetAttribute("value", "test");
webBrowser.Document.Forms[0].InvokeMember("submit");
a = 2;
}
public void methode3()
{
webBrowser.Navigate("http://www.test3.com");
}
,但如果我要進行多次操作,即在butoon1我補充一下:
private void button1_Click(object sender, EventArgs e)
{
for(int i=0; i<5 ;i++)
methode1();
}
那麼做了,我想我一定有幾個網頁瀏覽器,因此該解決方案是創建一個線程爲每個操作
private void button1_Click(object sender, EventArgs e)
{
for(int i=0; i<5 ;i++)
{
Thread thread = new Thread(new ThreadStart(methode1));
thread.Start();
}
}
所以每個由線程創建的web瀏覽器都必須有自己的方法webBrowser_DocumentCompleted
,以免混淆其他web瀏覽器的結果。
或者使用相同的方法webBrowser_DocumentCompleted
爲所有創建的網頁瀏覽器,但問題是如何指定哪個webbrowser,調用方法webBrowser_DocumentCompleted。
在此先感謝
此。當然,它假定代碼已經存在,但如果沒有,則OP有需要解決的第一問題等。 ':)' – 2013-02-26 12:40:47
感謝魯迪·維瑟,更新我的更多解釋 – Abdel 2013-02-26 13:26:13
@AbdelkarimTinguer我不知道我看你一眼正在做什麼的問題,但如果代碼能以這樣的方式被寫入一個(可能參數化)方法將完成這項工作,但單個事件處理程序無法查看*匿名函數*。 'webBrowser.DocumentCompleted + =(OBJ,E)=> {Console.WriteLine(obj.ToString()); };(語法可能稍微偏離,但你明白了)然後這個答案仍然有效。 – 2013-02-26 15:28:25