Dephi的同一个线程支持多次Execute吗?
创建一个Thread后,Execute方法能否多次执行呢?(不希望反复创建线程)
例如:
FreeOnTerminate := False;
procedure TReconThread.Execute;
begin
inherited;
while not Terminated do
begin
//do something
end;
Suspend();
end;
我做了测试,第一次执行Execute后,再次Resume,是不会执行Execute方法的。
是我写得不对,还是本身就不支持这种做法呢?
分不多了,见谅!
[解决办法]
Suspend放到循环里
[解决办法]
执行完不结束只休眠。另外还需要线程池。
[解决办法]
while not Terminated do
begin
//do something finish
if not Terminated then//最好还加上这句
Suspend();
end;
[解决办法]
Finished好像没有必要了吧
[解决办法]
楼主对execute的理解错误,首先execute是thread的一个方法,thread<> winthread可以这么说吧,
execute是线程的执行体,具体的你可以看vcl中关于thread类及ThreadProc就明白了,而线程启动后就进入execute执行,当前是不会二次进入的。你suspend只是让线程不再获取时间片。