做的一个采集网页内容的小程序,在自动运行一段时间后,有时候是几小时,有时候是几天,就无法访问到任何网页(不关程序换网址)了,必须关闭程序重启才可以,请问这可能是什么原因造成的?

解决方案 »

  1.   

    关键问题是你用什么实现的,IdHTTP? WebBrowser? 原生Socket?
      

  2.   

    用的TauHTTP组件,它是用的WinInet
      

  3.   

    把分析页面文本的代码先注释掉,只要访问WEB的部分,不去分析,看是否还会出问题
      

  4.   

    是用的idhttp吗。
    我好像也碰到了这个问题。
      

  5.   

    无法访问是什么意思?程序报错了还是没响应了?cpu满载了还是内存有啥问题?原因太多啦,关键点写日志看看吧~
      

  6.   

    1、程序没报错、也不是程序假死无响应;
    2、cpu没占满;
    3、内存没问题;
    4、防火墙没问题;就是在运行一段时间后,再发出任何HTTP连接请求时,一直无响应、处于等待状态。重启程序就好了,开始怀疑是否长时间使用一个相同本地客户端连接端口造成,但后来让端口动态变动,仍然不行。
      

  7.   

    贴出你关键位置的代码,应该是内存出错,或者是try掉了
      

  8.   

    没有超时,用fastmm4 没有检测到内存泄露
      

  9.   

    跪求,我也有一事不明:关于webbrowser的。打扰楼主讨论了,不好意思啊procedure TForm1.Button1Click(Sender: TObject);
    beginmyweb[n]:=Twebbrowser.create(form1);
    myweb[n].parentwindow:=self.Handle;
    myweb[n].Top:=button1.Top+button1.Height+10;
    myweb[n].SetBounds(button1.Left+10*n,button1.Top+button1.Height+10,30,30);
    myweb[n].Show;
    myweb[n].Navigate('http://127.0.0.1');
    inc(n);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    beginmyweb[n]:=Twebbrowser.create(form1);
    myweb[n].parentwindow:=self.Handle;
    myweb[n].Top:=button1.Top+button1.Height+10;
    myweb[n].SetBounds(button1.Left+10*n,button1.Top+button1.Height+10,30,30);
    myweb[n].Show;
    myweb[n].Navigate('http://127.0.0.1');
    inc(n);
    end;
    这个错哪了?我还没积分发帖,不好意思
      

  10.   

    idhttp不会遇到这个问题,我一直在使用!
    开100个或更多的线程,只是访问网页慢一点,对其它没影响,玩游戏什么的没事!
    不过也不建议开这么多线程.呵呵!
    你的这个组件我就不清楚了.
    刚开始学多线程的时候遇到过这类问题,好像是线程没写好的原因.现在没有出现过这类问题.