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;
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;