在循环里面使用这个ReadToEnd 方法循环运行100次,读取多个不同网址,运行第一次就正常,第二次就会假死(第一次已经阻塞?),但如果我把ReadToEnd这个方法放到一个按钮里面运行,就是说
按一次,ReadToEnd方法就仅仅运行一次,再按一次按钮,也能正常运行多一次,难道ReadToEnd就不能放在循环或者一个线程里面循环多次反复运行?
按一次,ReadToEnd方法就仅仅运行一次,再按一次按钮,也能正常运行多一次,难道ReadToEnd就不能放在循环或者一个线程里面循环多次反复运行?
{
public string theUrl;
public Encoding encoding;
public string html;
public void GetPage()
{ HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(theUrl); //建立HttpWebRequest對象 hwr.Timeout = 60000; //定義服務器超時時間
HttpWebResponse hwrs = (HttpWebResponse)hwr.GetResponse(); //取得回應
Stream s = hwrs.GetResponseStream(); //得到回應的流對象
StreamReader sr = new StreamReader(s, encoding);
html = (sr.ReadToEnd());
s.Close();
sr.Close();
}
}
------------------------------------------------------ private void button13_Click_1(object sender, EventArgs e)
{
getSinaData mydata = new getSinaData();
mydata.theUrl = textBox9.Text;
mydata.encoding = System.Text.Encoding.GetEncoding("GB2312");
Thread getIt = new Thread(new ThreadStart(mydata.GetPage)); getIt.Start();
getIt.Join();
richTextBox6.Text = mydata.html;
}
do
{ getSinaData mydata = new getSinaData();
mydata.theUrl = wholeUrl;
mydata.encoding = System.Text.Encoding.GetEncoding("GB2312");
Thread getIt = new Thread(new ThreadStart(mydata.GetPage)); getIt.Start();
getIt.Join();
richTextBox6.Text = mydata.html;
} while.....
如果按照这种模式重复调用 ReadToEnd 这个方法,就会出现假死,只能运行一次
代码还没写,呵呵