剩余等待时间(100)

  • 主题发起人 主题发起人 feng7504
  • 开始时间 开始时间
F

feng7504

Unregistered / Unconfirmed
GUEST, unregistred user!
我想IdUDPClient1发送后在等待服务器回应之前显示panel,上面提示还剩余等待n秒,这个n秒就是IdUDPClient1.ReceiveTimeout我的意图是如果在等待秒数结束前收到反馈信息,那么结束事件对象或者等待秒数倒数和超时同时结束执行时panel是弹出来了,可是panel上面的label1显示的秒数不是连贯的请教各位了,不胜感激function MyThreadFun(p: integer): DWORD;
stdcall;
begin
while 剩余等待时间>0do
begin
窗体.Label1.Caption := '剩余等待时间'+IntToStr(剩余等待时间)+'秒......';
窗体.Update;
sleep(1000);
剩余等待时间 := 剩余等待时间 - 1;
end;
Result := 0;
end;
IdUDPClient1.ReceiveTimeout := 9000;//9秒IdUDPClient1.send('hello') Panel.Visible := true;
hEvent := CreateEvent(nil, True, True, nil);//---------建立事件对象 CreateThread(nil, 0, @MyThreadFun, nil, 0, ThreadID);//创建线程 SetEvent(hEvent);//-----------------------------------启动事件对象 memo1.line.add(idUdpClient.ReceiveString);//----------显示反馈信息 ResetEvent(hEvent);//---------------------------------暂停事件对象 CloseHandle(hEvent);//--------------------------------关闭事件对象 Panel.Visible := false;
 
请不要在线程内直接操作VCL对象,你可以通过消息方式让主线程来处理他
 
换一种方式,比如 sleep(300),然后根据系统时钟来判断过了多久。
 
感谢两位的热心回答
 

Similar threads

D
回复
0
查看
802
DelphiTeacher的专栏
D
D
回复
0
查看
747
DelphiTeacher的专栏
D
后退
顶部