简单说说Delphi中线程的释放
来源:互联网 发布:网络摄像头直播 编辑:程序博客网 时间:2024/05/10 06:48
线程的释放方式有两种:一种是线程在运行完成后自动释放,一种是手动释放。
无论是那种释放,都应该在线程停止后进行释放。
然而线程的停止也有两种情况:一种是不需要设置标志位,直接完成;一种是由于execute方法中做了循环,需要设置标志位才能停止。
如果线程已经停止并且自动释放,再去手动停止,就会报错。
下面看代码:
1、自动停止后自动释放的线程:
constructor TTestThread.Create;begin inherited Create( True ); FreeOnTerminate := True;end;procedure TTestThread.Execute;begin ....//功能代码 //此方法完成后线程就已经停止了end;
这种情况线程会自动释放,因此不要手动释放,否则会报错
2、手动停止后自动释放的线程:
constructor TTestThread.Create;begin inherited Create( True ); FreeOnTerminate := True;end;procedure TTestThread.Execute;begin while not Terminated do //not Terminated do begin ....//功能代码 end;end;procedure Testbegin t1 := TTestThread.Create( Self ); t1.Terminate;end;3、手动释放的线程:
constructor TTestThread.Create;begin inherited Create( True );end;procedure TTestThread.Execute;begin while not Terminated do //not Terminated do begin ....//功能代码 end;end;procedure Testbegin t1 := TTestThread.Create( Self ); t1.Terminate; t1.WaitFor; t1.Free;end;那么,何时使用自动释放的线程,何时使用手动释放的线程呢
我的建议是:
如果这个线程运行时间很短或者能保证在系统退出前完成运行,则可以选择自动释放,因为它可以很快自动释放掉
如果这个线程运行贯穿系统运行整个期间,则要选择手动释放了
- 简单说说Delphi中线程的释放
- 简单说说Delphi中线程的释放
- Delphi 线程的释放
- 简单说说android的线程封装
- 简单说说android的线程封装 zz
- 简单说说android的线程封装
- 简单说说android的线程封装
- 简单说说android的线程封装 zz .
- 简单说说android的线程封装
- Delphi中对象释放的问题
- Delphi中对象释放的问题
- Delphi中内存的动态分配与释放
- Delphi中对象释放的问题
- 简单说说正则中(.*),(.+?)的区别
- 简单说说SQL中Join的使用
- 释放线程中new的套接字
- 线程中释放锁的方式
- 线程中释放锁的方式
- 每个.NET 开发人员应该下载的十个必备工具
- -线程的调度
- -用哪个创建线程CreateThread还是_beginthread
- 日志型文件系统
- 项目经理应该具备的技能
- 简单说说Delphi中线程的释放
- -创建线程的另一个函数_beginthreadex
- -线程的一些性质
- 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用17
- zoj 1712
- -终止线程的运行
- PMP exam changes
- -创建线程的函数CreateThread
- -线程基本概念