当前位置:首页 >> VB.NET >> 关于vb.net窗体假死问题。
关于vb.net窗体假死问题。

更新日期:2008-08-18 阅读次数:206

您认为本文属于   垃圾   OR   好贴

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