idhttp1.Get(downurl,tmpStream); 放在另一个线程中去执行

解决方案 »

  1.   

    线程不能用,因为必须执行完idhttp1.Get(downurl,tmpStream);后程序才能继续执行,不能用线程进行同步执行
      

  2.   

    Panel1.Visible:=true; 
    Application.ProcessMessage;      //这样也不行吗?
    idhttp1.Get(downurl,tmpStream); 
      

  3.   

    那就先执行idhttp1.Get(downurl,tmpStream);,然后再显示Panel
      

  4.   

    TO:gobiz 可行,谢谢啦,不过显示是显示出来了,但里面的GIF不会动……
      

  5.   

    当然了,你现在使用的是单线程模式,GIF的动画也是需要有空余时间片的时候才能变换的,而这时候你的idHttp1.Get已经完全占用着时间片的,当然GIF动画是没有办法同时动的。要想满足你的要求,估计只能使用多线程。建议你在函数中创建线程,然后等待线程结束,应该可以满足你的要求;Panel1.Visible := True;
    Thread1 := TThread.Create(False);
    while not Thread1.Terminated do
      Application.ProcessMessage;
    ……就是类似以上代码的处理模式。
      

  6.   

    在你的窗体上面放一个IdAntiFreeze控件,就可以了!