我有一个窗体,其中有一个全局变量myThread01type
Tmainform = class(TForm)
.....
end;var
mainform: Tmainform;
myThread01: TThread;在Tmainform中,一个函数调用了myThread01
procedure Tmainform.thread3;
begin
// 永循环线程1
myThread03 := TThread.CreateAnonymousThread(
procedure
begin
while true do
begin
.........
end;
end);
myThread03.Priority := tpTimeCritical;
myThread03.Start;
end;myThread01中是无限循环的代码。这个myThread01的生存期是多少呢? 我发现有时打开子窗体后,会出现myThread01失效的情况,不知道是不是和生存期有关系呢??
Tmainform = class(TForm)
.....
end;var
mainform: Tmainform;
myThread01: TThread;在Tmainform中,一个函数调用了myThread01
procedure Tmainform.thread3;
begin
// 永循环线程1
myThread03 := TThread.CreateAnonymousThread(
procedure
begin
while true do
begin
.........
end;
end);
myThread03.Priority := tpTimeCritical;
myThread03.Start;
end;myThread01中是无限循环的代码。这个myThread01的生存期是多少呢? 我发现有时打开子窗体后,会出现myThread01失效的情况,不知道是不是和生存期有关系呢??
1、定义一个自己的线程类型
type
TMyThread = class(Tthread)
protected
procedure Execute;override;
end;
2、给线程写个实体的过程
procedure TMyThread.Execute;
begin
ThreadOn:=True;
ThreadEnd:=False;
FreeOnTerminate:=true;
i:=0;
repeat
。。
sleep(75);
until Terminated or ThreadEnd;
ThreadOn:=False;
end;
3、声明一个对应的变量
var MyThread:TMyThread;
它是全局的。它指向线程的地址。
4、创建调用线程
myThread := TMyThread.Create();创建线程,它要实现体:这样才能实现线程。问题:至于线程抛入均匀长时间,要看MyThread.Execute;代码执行情况,执行完线程就自动释放。
这样才能实现线程。问题:至于线程生存执行多长时间,要看MyThread.Execute;代码执行情况,执行完线程就自动释放。至于生存期
变量MyThread它是全局的。线程的存在取决于,线程的实现部分代码MyThread.Execute;执行时间。
中没有看到对myThread01的访问呢?是不是myThread03打错了?
而且线程这个东西,一般也不做访问,我也没见到mythread01,线程的生命周期,一般线程函数的execute完了,线程的运行周期也就完了,如果FreeOnTerimte这个设置为了true,就会自动释放,对象都不存在了,否则就是线程对象还在,但是线程已经结束