私が次のコードを持っているとしましょう:
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しか表示しません。
なぜこの振る舞い?私は何が欠けていますか?