如何在没有结束的单独线程中运行相同的方法

时间:2015-04-21 16:09:49

标签: c# multithreading

我的项目在方法中有一个静态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.
}

&LT; 我想使用单独的线程来创建新的webbrowser。他们应该继续直到button2.click。

例如。当点击button1方法将创建Web浏览器(从textbox1.text计数),它们将保持连接。单击按钮2时,任务将关闭。

1 个答案:

答案 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);
}

你可以试试这个。这个解决方案没有经过测试,但也许您可以像使用它一样使用它来构建您想要的。