我正在用 C# .Net4.0 构建一个线程程序,但遇到了一些问题。
我正在使用线程池和回调。下面是我在 Main() 中的代码。
string[] urls = { url1, url2, url3, url4 };
callBack = new WaitCallback(PooledFunc);
for (int i = 0; i < urls.Length; i++)
ThreadPool.QueueUserWorkItem(callBack, urls[i]);
我还有一个可以从 url 获得响应的函数
static void PooledFunc(object url)
{
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
// Get the response.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream Answer = response.GetResponseStream();
// Display the status.
Console.WriteLine(response.Headers);
StreamReader _Answer = new StreamReader(Answer);
string content = _Answer.ReadToEnd();
Console.WriteLine(content);
}
我在那里放了一些测试打印,使用上面的代码,程序看起来像是启动了所有线程,但在所有线程都通过之前就终止了,而且每次都不同。
当我Console.ReadLine();
在 for 循环之后放置时,它看起来会等到所有线程都完成。
问题:有没有办法我可以等到所有线程都完成然后继续下一步而不使用Console.ReadLine();
?