按一次,ReadToEnd方法就仅仅运行一次,再按一次按钮,也能正常运行多一次,难道ReadToEnd就不能放在循环或者一个线程里面循环多次反复运行?
7 个解决方案
#1
可以贴一点代码来看看先...
#2
在循环里流关闭了没 ,代码怎么写的啊
#3
public class getSinaData
{
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;
}
{
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;
}
#4
在按钮事件里面调用 StreamReader 的ReadToEnd 方法是完全没有问题,可以反复使用
#5
启动一个 backgroundWorker,然后在该线程里面有以下循环
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 这个方法,就会出现假死,只能运行一次
#6
想到callback异步回调的方式
代码还没写,呵呵
代码还没写,呵呵
#7
有人懂吗?
#1
可以贴一点代码来看看先...
#2
在循环里流关闭了没 ,代码怎么写的啊
#3
public class getSinaData
{
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;
}
{
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;
}
#4
在按钮事件里面调用 StreamReader 的ReadToEnd 方法是完全没有问题,可以反复使用
#5
启动一个 backgroundWorker,然后在该线程里面有以下循环
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 这个方法,就会出现假死,只能运行一次
#6
想到callback异步回调的方式
代码还没写,呵呵
代码还没写,呵呵
#7
有人懂吗?