2015-04-21 65 views
3

我有一個項目,在該方法中有一個靜態的web瀏覽器。我想要在相同的時間運行此方法(包括Web瀏覽器),而不是結束。 有:如何在無結束的線程中運行相同的方法

1方法2按鈕2文本

static webbrowser wb; 

public static look(string address) 
{ 
    wb = new webbrowser; 
    wb.navigate(address); 
} 

button1.click() 
{ 
    for(int i = 0;i <= converttoint32(textbox1.text);i++) 
     look(textbox2.text); 
} 

button2.click() 
{ 
    //close the threads. 
} 

< 我想使用獨立的線程來創建新的網頁瀏覽器。他們應該繼續直到button2.click。

例如。當點擊button1方法將創建Web瀏覽器(從textbox1.text計數),他們將保持連接。點擊按鈕2時,任務將關閉。

+1

沒有結束? '而(真)'?請解釋一下你的意圖 – nikis

+0

你真的應該解釋你想達到的目標。這聽起來像你可能從錯誤的方向接近問題。 –

+0

我試瞭解釋。不像無盡的時光。當網絡瀏覽器連接時,它不應該與其他網絡瀏覽器關閉,斷開連接等。 –

回答

0

根據this,你可以試試。

public static object locker = new object(); 

    public static void InitBrowser(int browser) 
    { 
     var thread = new Thread(() => 
     { 
      // Create Browser Here 

      Monitor.Wait(locker); 
     }); 

     thread.SetApartmentState(ApartmentState.STA); 
     thread.Start(); 
    } 

button1.click() 
{  
    Monitor.Enter(locker); 
    for(int i = 0;i <= converttoint32(textbox1.text);i++) 
    InitBrowser(textbox2.text); 
} 

button2.click() 
{ 
    Monitor.PulseAll(locker); 
} 

您可以試試這個。這個解決方案沒有經過測試,但也許你可以使用它像一個基地來建立你想要的。

+0

這是以異步方式運行(同時運行的線程)還是一個任務在運行之前等待另一個任務完成? –

+2

@chfumero不,它只是將任務調度到線程池,它可以在沒有由線程池中的現有線程創建新線程的情況下執行。 – nikis

+0

如果我使用它就像它不會工作。讓我解釋清楚。 我想使用這種方法創建Web瀏覽器,它們應該是唯一的,並且可以單獨工作。 例如。 textbox1.text = 15;比我將創建15個Web瀏覽器,他們將contuinue工作,直到button2.click事件。 –

相關問題