关于多线程的执行,请大家给点建议 ( 积分: 100 )

  • 主题发起人 主题发起人 huhongru
  • 开始时间 开始时间
H

huhongru

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在做的海关程序.比如:每过5分钟取一次数据,每过10分种回写一次数据,每过20分钟对网络是否通查验一次.请问大家,我如何用多程序来实现,特别是这种时间上间隔如何去实现。
 
还甭说,这种需求离了多线程,其它方式真不好使,千万甭说用Timer(歧视)。
说说思路吧。首先在TThread.Create里创建一个FEvent = CreateEvent(,,,);然后在Execute里使用WaitForSingleObject(FEvent, 1000),这个1000是毫秒,具体自己定。该函数在等待1000毫秒后会退出,继续执行下面的指令。可以在WaitForSingleObject下面添加一个计数器FCounter,例如Inc(FCounter).当FCounter=300时,就是5分钟。
 
伪代码如下:
TZnThread = Class(TThread)
protected
FEvent: Hwnd;
FCounter: integer;
procedure Execute;
override;
public
constructor Create;
destructor Destroy;
override;
end;

procedure TZnThread.Create;
begin
FEvent := CreateEvent(nil, nil, nil);
end;

procedure TZnThread.Destroy;
begin
CloseHandle(FEvent);
end;

procedure TZnThread.Execute;
begin
while not Terminateddo
begin
if not WaitForSingleObject(FEvent, 1000) <> XX_TimeOut then
Exit;
Inc(FCounter);
if FCounter = 300 then
do
GetData;
if FCounter = 1000 then
do
SetData;
if Fcounter = 2000 then
do
CheckNet;
end;
end;
 
谢谢dmzn的回答.分都给你了,哈哈.
 
后退
顶部