延时问题,分数加到100了. (50分)

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

fael

Unregistered / Unconfirmed
GUEST, unregistred user!
在主程序暂停一段时间等待一个事件,我用createEvent结果事件一样没有发生.
那些用sleep,while () do application.processmessage的办法就不用说了.
我的程序没有用多线程. 分不够可以再加.
 
谁能提供解决方案, 200分全给了.
 
是不是要等待外部事件?还是什么事件???试过TIMER控件吗?
如果是要等待外部事件,可以用钩子!
 
procedure Delay(const uDelay:dword);
var
n:dword;
begin
n:=GetTickCount;
while ((GetTickCount-n)<=uDelay) do
application.ProcessMessages;
end;
 
你能不能说清楚点
 
用一个ttimer 设置active=false
时间设置成等待时间
然后在需要启动是设置active=true

ontimer 是你要做的事情最后active=false
 
你的需求不夠明確,
>> 在主程序暂停一段时间等待一个事件 <<
等的是什麼事件?
 
CreateEvent后, 主线程用WaitForSingleObject等事件,线程执行完成后调用ResetEvent
或SetEvent触发事件,主线程继续干活。 建议你看看候捷的《Win32多线程程序设计》,
里面说得比较清楚。
 
CreatEvent一个事件,然后使用WaitForSingleObject等待该事件即可
 
delphi入门到精通里面有一个很完整也好用的延时小程序
可以自定义等待的秒数
也不需要多线程
我记不得多少页和代码怎么写的了
每次都是复制来就用
你实在找不到明天我复制一个上来给你
 
找到了 322页
procedure delay(seconds.millisec:word);
var timeout:Tdatetime;
begin
timeout:=now+Encodetime(0,seconds div 60,seconds mod 60,millisec);
while now<timeout do
application.processmessages;
end;
 
首先我没有用多线程,但谁能提供在主程序用 CreateEvent实现延时的办法呢?
TO :melissa (美丽莎 ?)
你的办法可以实现,但不是最好的,程序运行到这里会占用很多资源的。
我要作的时,写一个多机TELNET工具,让每个TELNET从文件中读取命令,然后
远程运行。
 
你是要等待一个确切的时间,还是要等待某个外部的条件触发你的程序继续执行?
 
已经解决,虽然各位的办法不是我想要的,但还是非常感谢! 这些分分给提出解决
办法的朋友.哪位朋友还想要分,请再通知我.我还有160大分. 8)
 
多人接受答案了。
 
创建一线程,

var
g_hEvent, g_hThread: THandle;
szEventName: string;
dwThreadId: DWORD;

procedure ThreadFunc1(P: Pointer); stdcall; //声明线程函数
begin
Delay(x);
......
end;

procedure CheckTime;
var
dwThreadId: DWORD;
begin
szEventName := 'DelayEvent';
g_hEvent := CreateEvent(nil, TRUE, FALSE, pchar(szEventName));
g_hThread := CreateThread(nil, 0, @ThreadFunc1, nil, 0, dwThreadId);
if g_hThread = 0 then ShowMessage(' No thread. ');
end; }
 
后退
顶部