读书人

Dephi的同一个线程支持累次Execute吗

发布时间: 2013-08-01 15:23:18 作者: rapoo

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只是让线程不再获取时间片。

读书人网 >.NET

热点推荐