多线程你应该遇到这种情况吧(50)

  • 主题发起人 主题发起人 linuxping
  • 开始时间 开始时间
L

linuxping

Unregistered / Unconfirmed
GUEST, unregistred user!
在主窗体的Create中创建了FThread:=TmyThread.Create(true); FThread.FreeOnTerminate:=true;在主窗体关闭时不确定FThread是否已经自动free。如果没有自动free,则要使用FThread.terminate;FThread.waitfor;如果已经自动free,则不用处理。问题是,我不知道怎么判断FThread是否已经自动free,如果它已经自动free了,调用FThread.terminate;FThread.waitfor会包内存存取的错误。我的解决是在onTerminate事件中设置FThread:=nil, 然后在主窗体关闭事件中根据FThread是否为nil来判断。大家是怎么解决的?
 
所以最好还是手动释放, 这样关闭 主窗体时 才有得判断.或者 在主窗体关闭时再设置成 FThread.FreeOnTerminate:= true;
 
加了这个FreeOnTerminate:=true;那么就不用管了,因为Windows会把在你的进程空间里面的所有线程也ByeBye的,呵呵!除非你把线程建立在其它进程空间上(想作黑客程序)!呵呵!
 
你不用管的,线程自己会调用Waitfor的
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部