我有一个C#控制台应用程序,我有一个线程池。在线程池中将会有一个类执行一个连续的方法(直到它运行了一段时间或知道何时停止)。该方法连接到一个HttpWebResponse流,并继续保留它。C#ThreadPool一个线程阻塞其他?
问题是,在很短的时间内,所有的线程只是做他们的事情,但只有一个线程继续显示它的输出,其余的正在等待该线程。
这是为每个线程执行的方法。
function void ReadStream()
byte[] buf = new byte[8192];
String domain = streamingUrl
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(domain);
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
Stream resStream = response.GetResponseStream();
string tempString = null;
int count;
do
{
// fill the buffer with data
count = resStream.Read(buf, 0, buf.Length);
if (count != 0)
{
tempString = Encoding.ASCII.GetString(buf, 0, count);
try
{
mySqlManager.SaveResult(tempString);
Console.WriteLine("Been here");
Thread.Sleep(1000);
}
catch (Exception e)
{
}
}
}
while (count > 0);
}
当应用程序处于其他线程在一个线程中等待的状态时,您可以在调试器中击中全部。这可能会向您显示这些线程正在等待的内容。同时检查空的catch块中的任何异常,这可能会隐藏一些有趣的内容。 – 2011-06-10 17:03:56
不应该使用new关键字创建streamReader的新实例吗? – 2011-06-10 17:04:27