c# - 如何在单独的线程中无休止地运行相同的方法

标签 c# multithreading

我有一个项目在方法中有一个静态网络浏览器。我希望同时运行此方法(包括网络浏览器),不要结束。 有:

1 method 2 button 2 textbox

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 方法时将创建网络浏览器(从 textbox1.text 开始计算)并且它们将保持连接。单击按钮 2 时,任务将关闭。

最佳答案

基于 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);
}

你可以试试这个。此解决方案未经测试,但也许您可以将其用作构建所需内容的基础。

关于c# - 如何在单独的线程中无休止地运行相同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777656/

相关文章:

c++ - Boost线程完成回调可用

java - 使用 ExecutorService 时正在执行的附加任务是什么?

java - 如何在客户端服务器多线程中停止服务器

c - 信号中断 read()

c# - 将项目上传到开源存储库时,是否应该删除 bin 和 obj 文件夹?

java - 如何分析 Java 中的线程转储以最大限度地减少高 CPU 使用率

c# - 有没有办法在构造函数中初始化 EII 属性?

c# - Xamarin listView 中的绑定(bind)颜色

c# - 如何避免加载不必要的程序集

c# - 在安装 NuGet 时将文件复制到 Android 项目