更新日期:2008-08-18 阅读次数:206
Private Function GetSource(ByVal url As String) As String &nb
Private Function GetSource(ByVal url As String) As String
Try
Dim httpReq As HttpWebRequest
Dim httpURL As New System.Uri(url)
httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
httpReq.Method = "GET"
httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
Dim reader As StreamReader = _
New StreamReader(httpResp.GetResponseStream, System.Text.Encoding.GetEncoding("GB2312"))
Dim respHTML As String = reader.ReadToEnd()
Return respHTML
httpResp.Close()
Catch e As Exception
Console.WriteLine("GetSource出现问题:{0},{1}", e.Message, url)
End Try
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtDataSource.Text = ""
txtStartid.Text = ""
txtEndid.Text = ""
txtTemp.Text = ""
End Sub
Private Sub btnSetdata_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetdata.Click
End Sub
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
Dim i As Integer
For i = txtStartid.Text To txtEndid.Text
Application.DoEvents()'这里已经用了doevents,应该不会假死才对的!
txtTemp.Text = GetSource("http://www.xxx.com/page.asp?id=" & i & "")
Next
End Sub
以上是一个循环获得某些页面html源代码的程序,执行是正常的,只是窗体会间歇性假死(循环在执行中假死,执行完一次循环的那一瞬间可以移动窗体)!百思不得其解,请大家帮帮忙。执行循环再用一个线程...这样应该就好了...
你把你的取网页的功能做成异步委托或放一个线程中执行就不会这样了
我刚刚开始接触这些东西,所以有很多不懂的地方。。
能不能帮我修改一下以上的代码,我好比较一下这样学习起来比较快。。谢谢二位了
使用线程更改后的代码:
Private Function GetSource(ByVal url As String) As String
Try
Dim httpReq As HttpWebRequest
Dim httpURL As New System.Uri(url)
httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
httpReq.Method = "GET"
httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
Dim reader As StreamReader = _
New StreamReader(httpResp.GetResponseStream, System.Text.Encoding.GetEncoding("GB2312"))
Dim respHTML As String = reader.ReadToEnd()
Return respHTML
httpResp.Close()
Catch e As Exception
Console.WriteLine("GetSource出现问题:{0},{1}", e.Message, url)
End Try
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtDataSource.Text = ""
txtStartid.Text = ""
txtEndid.Text = ""
txtTemp.Text = ""
End Sub
Private Sub btnSetdata_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetdata.Click
End Sub
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
'使用线程
dim th as new System.Threading.Thread(AddressOf Start)
th.Start()
End sub
private sub Start()
Dim i As Integer
For i = txtStartid.Text To txtEndid.Text
Application.DoEvents()'这里已经用了doevents,应该不会假死才对的!
txtTemp.Text = GetSource("http://www.xxx.com/page.asp?id=" & i & "")
Next
end sub
太谢谢你了!!
备:...... CCSDN.NET.CN &2008 Copyright