S smhp Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-12 #22 jiangyiquan同志:真是感谢你,不过我还有些迷惑:EA、EB、ThrdA、ThrdB不用释放吗?我对DELPHI中变量空间的回收比较 迷惑!如果用户没有按“END”按纽就关闭程序,线程会出问题吗?系统会自动清理吗?
jiangyiquan同志:真是感谢你,不过我还有些迷惑:EA、EB、ThrdA、ThrdB不用释放吗?我对DELPHI中变量空间的回收比较 迷惑!如果用户没有按“END”按纽就关闭程序,线程会出问题吗?系统会自动清理吗?
J jiangyiquan Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-12 #23 EA、 EB当然要释放,EA.Free就是释放。 如果需要经常判断EA的值,如 EA = XX 等, 最好用 FreeAndNil(EA) , 因为对象Free后,并不自动置为Nil, 而FreeAndNil在对象释放后, 把对象置为nil. ThrdA、ThrdB也要释放,请注意 ThrdA.FreeOnTerminate := True; 就是设置当线程结束时, 自动释放对象ThrdA的空间。 另外要特别注意的是,程序结束前,必须把所有运行的子线程结束,否则程序退出时容易产生异常, 尤其是在98下(蓝屏)。Dlphi中的线程对象TThread与Windows中的线程对象并不是一个概念。 一点体会,与你共享。
EA、 EB当然要释放,EA.Free就是释放。 如果需要经常判断EA的值,如 EA = XX 等, 最好用 FreeAndNil(EA) , 因为对象Free后,并不自动置为Nil, 而FreeAndNil在对象释放后, 把对象置为nil. ThrdA、ThrdB也要释放,请注意 ThrdA.FreeOnTerminate := True; 就是设置当线程结束时, 自动释放对象ThrdA的空间。 另外要特别注意的是,程序结束前,必须把所有运行的子线程结束,否则程序退出时容易产生异常, 尤其是在98下(蓝屏)。Dlphi中的线程对象TThread与Windows中的线程对象并不是一个概念。 一点体会,与你共享。
完 完颜康 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-16 #24 to :教父 你的代码我运行过,发现单部的情况确实可以互相通行,而实际上只完成了一次,a线程 完成后挂气,通知b,结果b完成后并没有乡想象中那样,唤醒a ....
教 教父 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-16 #25 不会啊,在 procedure TBThread.Execute; begin while not Terminateddo begin Synchronize(ShowArrayVal); PostMessage(Form1.Handle,UM_RESUMEA,0,0);//注意这里不能用SendMessage Suspend; end; end; 如果用了SendMessage倒是会出现那个问题,上面那段代码我测试过的,应该不会有问题。
不会啊,在 procedure TBThread.Execute; begin while not Terminateddo begin Synchronize(ShowArrayVal); PostMessage(Form1.Handle,UM_RESUMEA,0,0);//注意这里不能用SendMessage Suspend; end; end; 如果用了SendMessage倒是会出现那个问题,上面那段代码我测试过的,应该不会有问题。