如何限制特定间隔的线程数?

时间:2014-03-19 06:36:49

标签: c# multithreading threadpool

我的查询是我有一个方法应该以特定的时间间隔调用,在该时间间隔内具有特定数量的线程,然后在下一次调用后保持空闲状态。

为了更清楚,我在下面提供了一个示例代码:

namespace ThreadTest
{
   public partial class Form1 : Form
   {
      public Form1()
      {
         Initialize Components();
      }
   }

   public void ExtractDatafromWebPage()
   {
      //Code for extracting data from web page using HTTPWebRequest and HTTPWebResponse class
   }

   private void btn1_Click(object sender, EventArgs e)
   {
     // On clicking the button the ExtractDatafromWebPage() method should be called with 5 threads at every 10 seconds.
   }
}

现在我的要求是应该在每10秒后调用一次方法,并且每次只有5个线程应该与此方法相关联,并且应该保持空闲直到接下来的10秒。这个过程将继续无限延续。

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,你可以做类似如下所示的事情(因为我不确定你的意思是什么:'只有5个线程应该与这个方法相关'

如果你的意思是只有五个线程应该输入方法,那么只需要一个计数为'5'的信号量。

传递你需要产生的线程数,时间段等。

private void btn1_Click(object sender, EventArgs e)
        {
            // On clicking the button the ExtractDatafromWebPage() method should be called with 5 threads at every 10 seconds.
            Timer t = new System.Threading.Timer(
                () =>
                {
                    for (int i = 1; i <= 5; i++)
                    {
                        //you can use thread pool thread
                        new Thread(() => this.ExtractDatafromWebPage()).Start();
                    }
                }, null, 0, 10 * 1000);
        }