异步HttpWebRequest - 线程号

时间:2009-09-22 16:03:19

标签: .net multithreading httpwebrequest iasyncresult

假设我有以下代码:

ThreadPool.SetMinThreads(100, 100); 
for (int i = 0; i < 100; i++)
{
  var request = WebRequest.Create(url);
  request.BeginGetResponse(ar =>
 {
  //inside AsynchCallBack method for request.BeginGetResponse()
  var response = (HttpWebResponse)request.EndGetResponse(ar);

  string html;
  using (var receiveStream = response.GetResponseStream())
  using (var readStream = new StreamReader(receiveStream
                       , Encoding.UTF8))
  {
   html = readStream.ReadToEnd();
  }

            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);

 }, null
 );
}

我希望在向控制台写入ManagedThreadId时会看到很多线程 - 当然我错了:)。我通常只看到2个不同的线程ID,偶尔会看到3个线程ID。

为什么会这样?我错过了什么?

1 个答案:

答案 0 :(得分:2)

我认为你正在点击connection limit