我在MainForm中启用了一个线程MyThread.我想在MainForm退出之前先把MyThread给关闭
了。我是这样写的:
Procedure TMainForm.WhenClose;
beign
MyThread.suspend;
Application.Terminate;
end;
可当在‘MyThread.suspend’时,系统提示‘ThreadError,无效句柄',这是为什么啊?
我要在退出 MainForm之前关闭MyThread应该怎么办?
了。我是这样写的:
Procedure TMainForm.WhenClose;
beign
MyThread.suspend;
Application.Terminate;
end;
可当在‘MyThread.suspend’时,系统提示‘ThreadError,无效句柄',这是为什么啊?
我要在退出 MainForm之前关闭MyThread应该怎么办?
能够告诉我怎样指定线程的拥有者吗?To plainsong(伤心的风) :
在系统提示‘ThreadError,无效句柄'之前,线程的handle为52,而把MyThread.suspend改为
MyThread.terminate,系统没有报错!
建议你在线程的execute事件加上这句话 FreeOnTerminate:=True;
这样试看看
你可以在线程构造函数中使用FreeOnTerminate:=True,然后在程序退出时设置线程的Terminated:=True,在execute中检测eTerminated,为false时线程执行.不过要解决线程先于程序结束时自动释放以至于不能正常访问问题.