首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎样停止线程解决方法

2012-02-19 
怎样停止线程线程内容:whiletruedobeginform1.Memo1.Lines.Add(formatdatetime( yyyyMMdd:hhmmss ,now()))

怎样停止线程
线程内容:
while   true   do
  begin
  form1.Memo1.Lines.Add(formatdatetime( 'yyyyMMdd:hhmmss ',now()));
  sleep(500);
  end;

主线程停止语句:
      线程.Suspended
      线程.free

  执行以后程序就死了,怎么回事

[解决办法]
procedure TMyThread.Execute;
begin
Self.FreeOnTerminate := False;
while not Self.Terminated do
begin
.......
end;
end;


停止线程并等待线程
MyThread.Terminate;
MyThread.WaitFor;



[解决办法]
MyThread.Terminate;
这样结束线程,资源会自动释放吗

==================================================================

1. 在TMyThread的Destroy事件中,用代码释放TMyThread使用的资源。

2.在MyThread创建的时候, 设置FreeOnTerminate为True,使得线程终止时线程变量能被释放,例如:
MyThread := TMyThread.Create(True); //Suspended := True
with MyThread do
begin
FreeOnTerminate := True;
Resume;
end

[解决办法]
马上停的话会有问题的,不知道你要用来做什么的,但是可以把线程挂起Suspend可以让他停止下来,唤醒后继续上次的执行。
[解决办法]
waitfor

[解决办法]
线程里不能直接去操作界面元素.
[解决办法]
可以使用下面的代码强行终止线程:
TerminateThread(mythread.Handle,1);
CloseHandle(mythread.Handle);

不过不建议使用这种方法,容易造成资源不能正确释放
最好让线程类自己去执行中止代码
[解决办法]
mythread.Suspend

热点排行