Blue
Red
Green
Orange
Voilet
Slate
Dark

结束不了??? ( 积分: 50 )

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
我的线程有个双循环:
procedure mmthread.execute()
begin
while not terminateddo
begin
while truedo
begin
..............
end;
end;
end;

my:mmthread;
1.调用my.terminate属性为true停不了线程????
2.用terminate为true停线程就不用再来个my.free了撒????
3.用my.suspend,再my.free后,程序就死起了,按键也按不起了????
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
我的线程有个双循环:
procedure mmthread.execute()
begin
while not terminateddo
begin
while truedo
begin
..............
end;
end;
end;

my:mmthread;
1.调用my.terminate属性为true停不了线程????
2.用terminate为true停线程就不用再来个my.free了撒????
3.用my.suspend,再my.free后,程序就死起了,按键也按不起了????
 
X

xeen

Unregistered / Unconfirmed
GUEST, unregistred user!
1. while true 是死循环,需要在里面加入 break 或 goto 等跳转语句。
2.设置Thread对象的FreeOnTerminate属性为True才有次效果.
3.一个线程没有结束,一般不要强行Free,会有很多问题。
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
在线程的外面怎样结束?
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
在调用terminate属性为true 后那还要.free才能释放资源哟?
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
我试过了如果线程就是:
while not terminateddo
begin
...............
end;
只是一个循环的话,terminate为true就能正常的结束线程
 
S

someset

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么会用while true 这样的语句呢
思路问题
 
X

xeen

Unregistered / Unconfirmed
GUEST, unregistred user!
那当然,你在一层循环里包一个死循环没意义。
 
H

hongxing_dl

Unregistered / Unconfirmed
GUEST, unregistred user!
是的,死循环了~~~第一次判断没有terminated 后就已经进入
while truedo
死循环了,根本跳不出来
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
我做的毕业设计是个电话语音服务系统。语音卡有两个通道,我的设计是一个通道是一个线程。但我发现用到双循环后,用线程对象的terminate属性为true就停不了了??
我线程是这样的:
while not terminateddo
//最外层循环是一直不停的让它监
begin
//听通道
。。。。。。。。
while truedo
//内层这个循环是判断用户只要不输入#号
begin
//就记录用户的输入(用户输入以#结束)
case tv_getdtmfchar(0) of //该函数返回输入的asc码
48:yonghushuru:=yonghushuru+'1';
49:yonghushuru:=yonghushuru+'2';
................
35:break;
else

end;

end;

end;

1.但在调用该线程对象的terminate为true时就停不了了,我试过的单循环就可以正常的停????
2.用terminate为true停线程就不用再来个 线程对象.free 了撒????
3.用对象.suspend,再对象.free后,程序就死起了,按键也按不起了????
谢谢了!!
 
H

hongxing_dl

Unregistered / Unconfirmed
GUEST, unregistred user!
while truedo
//内层这个循环是判断用户只要不输入#号
begin
//就记录用户的输入(用户输入以#结束)
application.ProcessMessages;//加上这句,不然死定了 :)
case tv_getdtmfchar(0) of //该函数返回输入的asc码
48:yonghushuru:=yonghushuru+'1';
49:yonghushuru:=yonghushuru+'2';
................
35:break;
else

end;

end;

如果加上那句还不行,再把 35:break;改为Exit试试??
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
exit 就跳出这个事件了
 
H

hongxing_dl

Unregistered / Unconfirmed
GUEST, unregistred user!
那在while truedo
的循环体中加上application.ProcessMessages;这句就应该可以了~~~试试吧~~~
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
写具体点呀,我是初学线程
 
H

hongxing_dl

Unregistered / Unconfirmed
GUEST, unregistred user!
我上面已经写了啊,没注意看吧?:)
while truedo

begin

application.ProcessMessages;//加上这句,意思是交主动权给windows
case tv_getdtmfchar(0) of
48:yonghushuru:=yonghushuru+'1';
49:yonghushuru:=yonghushuru+'2';
................
35:break;
else

end;

end;
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
2.用terminate为true停线程就不用再来个my.free了撒????
3.用my.suspend,再my.free后,程序就死起了,按键也按不起了????
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
加了application.ProcessMessages,后在线程里面也是线程对象.terminate属性为true来结束是不是?之后不用再.free了撒????
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
给我你的邮箱嘛,我发个简单的线程双循环来,帮我调试一下,谢谢
 
H

hongxing_dl

Unregistered / Unconfirmed
GUEST, unregistred user!
hongxing_dl724@163.com
我先午休一下下,你先发过来吧。
我用的d7
 

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经给你发到邮箱了,谢谢!!!
 

Similar threads

S
回复
0
查看
959
SUNSTONE的Delphi笔记
S
D
回复
0
查看
743
DelphiTeacher的专栏
D
S
回复
0
查看
779
SUNSTONE的Delphi笔记
S
D
回复
0
查看
688
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部 底部