因为TIdHttp是阻塞式的,所以,如果传输的文件比较大的时候,整个界面都动弹不得,和死了一样。
解决方法有两个:
1. 把对IdHttp的处理,放入线程内。搞个线程也很简单,就是一旦数据交互起来,麻烦一些。
2. 好久没用delphi了,不想写太复杂的代码了,这个简单的应用里,只要界面不僵死就可以了。所以不想用线程。第二个方法就是,往界面里放入一个TIdAntiFreeze控件,(真怀念delphi的方便)。不要高兴的太早,可能界面还是动不了的。因为默认情况下idAntiFreeze的OnlyWhenIdle属性是true,改为false,才会真正的antiFreeze。
BTW,键盘的F11键坏掉好久了,都没有什么感觉 (用delphi没有这个键,会死人的)
Posted in
未分类 at 02月 28th, 2009.
1 Comment.
用indy上传下载文件时,可以先在IdHTTP1WorkBegin中获得总大小,然后在IdHTTP1Work中实时得到当前的传输量,一遍算出整体的传输进度。
procedure TForm1.IdHTTP1WorkBegin(Sender:TObject; AWorkMode:TWorkMode;
const AWorkCountMax:Integer);
begin
ShowMessage(IntToStr(AWorkCountMax));
end;
procedure TForm1.IdHTTP1Work(Sender:TObject; AWorkMode:TWorkMode;
const AWorkCount:Integer);
begin
Caption := IntToStr(AWorkCount);
end;
Posted in
未分类 at 02月 28th, 2009.
No Comments.