日期:2014-05-20  浏览次数:20730 次

高分求解--抓取程序遇到的很奇怪问题!
我用

          HttpWebRequest   request   =   (HttpWebRequest)
                                          WebRequest.Create(Url);
                                HttpWebResponse   response   =   (HttpWebResponse)
                                request.GetResponse();
                                Stream   resStream   =   response.GetResponseStream();
                                StreamReader   sr   =   new   StreamReader(resStream,   Encoding.Default);
           
          取得网页的内容,程序是能够很好的运行的,但运行一段时间后总出现这样的错误提示:
 “     上下文“0x1a1db0”已断开连接。正在从当前上下文(上下文   0x1a1c40)释放接口。这可能会导致损坏或数据丢失。要避免此问题,请确保在应用程序全部完成   RuntimeCallableWrapper   (表示其内部的   COM   组件)之前,所有上下文/单元都保持活动状态。”
    在   baidu/google   上搜索 "0x1a1db0 "一条数据也没!

   还有我抓取时每抓一条数据就往.txt文件中写入一条记录,程序运行后内存猛增,我在每一次循环执行后都加了
         GC.Collect();
                        GC.WaitForPendingFinalizers();
                        GC.Collect();
 还是一样,没有任何效果。

   请问高手怎么能够解决这些问题啊,多多感谢!


------解决方案--------------------
抓取程序通常需要加个try
------解决方案--------------------
另外记得close
------解决方案--------------------
加try catch
如果发生异常,循环重试

能Close的Close
能Dispose的Dispose
------解决方案--------------------
应该是流的问题 你抓后要将resStream 释放 StreamReader 读完后关闭 关闭前再dispose一下看看问题是否还出现
------解决方案--------------------
sr和response没Close