怎样让线程每隔一定时间自动执行(50分)

  • 主题发起人 主题发起人 zylsoft
  • 开始时间 开始时间
Z

zylsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
type
meThread=class(TThread)
private
{ Private declarations }
protected
procedure Execute;
override;
end;

var
Form1: TForm1;
MyThread:TThread;
procedure meThread.Execute;
begin
//FreeOnTerminate:=true;
执行的代码
//form1.Memo1.Lines.Add('测试');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if MyThread=nil then
begin
MyThread:=meThread.Create(false);
end;

end;

代码部分路上,怎样让meThread执行完一次后停1分钟后再从头执行,就是让线程间隔1分钟反复执行?
 
在Execute函数加一个循环
while not terminateddo
begin
做你自己的事情
Sleep(1000);
end;
 
再开一个调度线程.
当线程执行完一个周期后就挂起,等调度线程唤醒.
 
在Execute函数加一个循环
while not terminateddo
begin
做你自己的事情
Sleep(60000);
//这才是一分钟
end;

再开一个调度线程.
当线程执行完一个周期后就挂起,等调度线程唤醒.
这个,我不会,还望高手们代码上来,方便学习
 
resume想执行时唤醒,加个判断就是了
 
搞个Timmer控件控制
 
Timer可以,但是不够灵活,最好搞一个调度线程
 
procedure meThread.Execute;
begin
//FreeOnTerminate:=true;
执行的代码
//form1.Memo1.Lines.Add('测试');
end;
多线程操作VCL的容器类不加同步。找死。
 
我在线程里面,操作 MEMO 也没同步,目前没有发现什么问题,
只是我的线程,,在执行一段时间以后,时间长短不定,没有统计,所有线程就是自动停止了,
程序执行的时候,我点击一个开始按钮,创建10个线程做同样的工作,线程里面,调用自己的一个函数 循环下去,,执行一段时间以后,就全都停止了,
在点一下开始按钮,又都工作了,
谁碰到过类似问题么
 
const
csTimeOut = 1000 * 60 * 20;
begin
while not Terminated and ((FEvent.WaitFor(csTimeOut) = wrTimeOut)
or (FEvent.WaitFor(csTimeOut) = wrSignaled))do
begin
/////////////
FEvent.ResetEvent;
end;
end;
end;
 
后退
顶部