CNDEV
...
...
账号
登
登录
先
先随便看看
中国开发网
: 论坛:
程序员情感CBD
: 贴子 274742
holly
·
2006-01-11 03:52:50
·
阅读: 423
说得不清不楚的, 贴你的代码
<空>
相关信息:
一个DELPHI的程序,用了线程。每次只要让线程里的代码跑一跑,主FORM就会被冻住好几秒。通常这样的问题该从哪个方向去考虑?
(空) (
pcplayer
[693]
2006-01-11 11:20
)
..
(空) (
老玉米
[378]
2006-01-11 11:23
)
Just let your child thread sleep(0) occasionally
(空) (
老玉米
[560]
2006-01-11 11:26
)
笑啥,严肃点。
(空) (
pcplayer
[376]
2006-01-11 11:26
)
奇怪,按说用线程的目的之一就是避免主form在某些操作时被冻结
(57字)
(
Fish
[631]
2006-01-11 11:25
)
我有个 TThreadList,主线程向里面丢东西。丢的时候也执行了Lock,然后线程去List里取东西来处理,处理后再丢出来。
(141字)
(
pcplayer
[777]
2006-01-11 11:33
)
说得不清不楚的, 贴你的代码
(空) (
holly
[422]
2006-01-11 11:52
)
最好使用PostMessage干这件事情
(空) (
GoodHope
[849]
2006-01-11 13:05
)
什么叫丢?还丢进丢出的。。
(空) (
GoodHope
[402]
2006-01-11 13:06
)
Lock,谁Lock谁?
(空) (
GoodHope
[371]
2006-01-11 13:08
)
ThreadList应该是自动加锁的吧。
(32字)
(
王中王
[573]
2006-01-11 13:11
)
AList:=ThreaeList.Lock ,然后才能访问 AList.这里没问题,我跟踪过了。就是使用这个有点费时间,可能要好几百毫秒
(空) (
pcplayer
[418]
2006-01-11 13:30
)
ThreaeList.Lock?ThreaeList是你自己写的吧。
(34字)
(
GoodHope
[554]
2006-01-11 13:36
)
就是这个。我没表述完整。
(空) (
pcplayer
[378]
2006-01-11 13:42
)
错一个字母都不行
(空) (
GoodHope
[350]
2006-01-11 13:45
)
最好要sleep一下
(空) (
zhenghj
[487]
2006-01-11 12:00
)
这就是为什么indy组件中有个专门的防冰冻的组件了
(23字)
(
gcc
[550]
2006-01-11 12:09
)
线程里面调用了Synchronize同步方法吧?
(92字)
(
GoodHope
[539]
2006-01-11 13:02
)
线程里没调用 Synchronize。一调用这玩意的话,那就真的是冻住了,再也不响应鼠标键盘了。
(空) (
pcplayer
[534]
2006-01-11 13:11
)
Synchronize里不要放大操作。如果整个线程里多数代码要放到Synchronize里执行
(24字)
(
王中王
[599]
2006-01-11 13:12
)
说得不清不楚的, 贴你的代码 (空) (holly [0] 今天 11:52)
(空) (
GoodHope
[444]
2006-01-11 13:12
)
代码太复杂了。没法贴。现在大概知道是当线程通过调用一个接口方法把数据丢给 TIdUdpServer 发出去后,界面被冻住了。没有 TIdUdpServer 就没问题。应该是线程和 ……
(空) (
pcplayer
[636]
2006-01-11 13:39
)
感觉上是一个线程等待另一个线程,显然应该用事件同步,而不应该用临界区。
(91字)
(
GoodHope
[752]
2006-01-11 13:44
)
如果这个接口方法会有何界面的消息通信,有可能冻住的,如果这样的话,就不要在非界面线程里调用这个接口方法,试一蛤post message给界面,让界面去调用它。
(45字)
(
周星驰
[543]
2006-01-11 13:45
)
这个接口方法仅仅是将数据调用 Indy UdpServer 把数据发送出去,并没有刷新界面。并且,类似的代码,我写一个简单的实验程序,就没有界面被冻住的问题。
(空) (
pcplayer
[631]
2006-01-11 14:11
)
不过,发消息的方法多半对这个问题的解决有用。
(空) (
pcplayer
[395]
2006-01-11 14:23
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录