CNDEV
CNDEV.ORG
当前在线
论坛
CBD
程序员情感CBD
程序员见面交流会
CBD开发区
Java/J2ME
.NET/C#
数据库
Delphi/BCB
Visual C
其它
修真养身
中国象棋
纪念日
谈钱太俗,还是投机吧
听音乐
iCosta
资源共享
一隅
好文共赏
看电影看美剧
待定
狗屎
雪域召唤
工作流
专业显摆区
语录
情感
批评与自我批评
爱情故事
发牢骚
看三点区
游戏
CNDEV-CS/WOW
浩宇长空
生活
家有XPH
我爱学英语
美食天地ORG
半调子体育迷
观澳园友邻
搞笑奇文
拍照片
我读书我存在
论坛系统
超级垃圾站
系统建议及BUG
系统测试
中国开发网
: 论坛:
程序员情感CBD
: 贴子 274767
pcplayer
:
线程里没调用 Synchronize。一调用这玩意的话,那就真的是冻住了,再也不响应鼠标键盘了。
[阅读: 451] 2006-01-11 05:11:04
<空>
相关信息:
一个DELPHI的程序,用了线程。每次只要让线程里的代码跑一跑,主FORM就会被冻住好几秒。通常这样的问题该从哪个方向去考虑?
(空) (
pcplayer
[610]
2006-01-11 03:20
)
..
(空) (
老玉米
[298]
2006-01-11 03:23
)
Just let your child thread sleep(0) occasionally
(空) (
老玉米
[472]
2006-01-11 03:26
)
笑啥,严肃点。
(空) (
pcplayer
[297]
2006-01-11 03:26
)
奇怪,按说用线程的目的之一就是避免主form在某些操作时被冻结
(57字)
(
Fish
[508]
2006-01-11 03:25
)
我有个 TThreadList,主线程向里面丢东西。丢的时候也执行了Lock,然后线程去List里取东西来处理,处理后再丢出来。
(141字)
(
pcplayer
[668]
2006-01-11 03:33
)
说得不清不楚的, 贴你的代码
(空) (
holly
[333]
2006-01-11 03:52
)
最好使用PostMessage干这件事情
(空) (
GoodHope
[408]
2006-01-11 05:05
)
什么叫丢?还丢进丢出的。。
(空) (
GoodHope
[323]
2006-01-11 05:06
)
Lock,谁Lock谁?
(空) (
GoodHope
[293]
2006-01-11 05:08
)
ThreadList应该是自动加锁的吧。
(32字)
(
王中王
[460]
2006-01-11 05:11
)
AList:=ThreaeList.Lock ,然后才能访问 AList.这里没问题,我跟踪过了。就是使用这个有点费时间,可能要好几百毫秒
(空) (
pcplayer
[345]
2006-01-11 05:30
)
ThreaeList.Lock?ThreaeList是你自己写的吧。
(34字)
(
GoodHope
[430]
2006-01-11 05:36
)
就是这个。我没表述完整。
(空) (
pcplayer
[299]
2006-01-11 05:42
)
错一个字母都不行
(空) (
GoodHope
[270]
2006-01-11 05:45
)
最好要sleep一下
(空) (
zhenghj
[352]
2006-01-11 04:00
)
这就是为什么indy组件中有个专门的防冰冻的组件了
(23字)
(
gcc
[421]
2006-01-11 04:09
)
线程里面调用了Synchronize同步方法吧?
(92字)
(
GoodHope
[425]
2006-01-11 05:02
)
线程里没调用 Synchronize。一调用这玩意的话,那就真的是冻住了,再也不响应鼠标键盘了。
(空) (
pcplayer
[450]
2006-01-11 05:11
)
Synchronize里不要放大操作。如果整个线程里多数代码要放到Synchronize里执行
(24字)
(
王中王
[476]
2006-01-11 05:12
)
说得不清不楚的, 贴你的代码 (空) (holly [0] 今天 11:52)
(空) (
GoodHope
[366]
2006-01-11 05:12
)
代码太复杂了。没法贴。现在大概知道是当线程通过调用一个接口方法把数据丢给 TIdUdpServer 发出去后,界面被冻住了。没有 TIdUdpServer 就没问题。应该是线程和 ……
(空) (
pcplayer
[525]
2006-01-11 05:39
)
感觉上是一个线程等待另一个线程,显然应该用事件同步,而不应该用临界区。
(91字)
(
GoodHope
[635]
2006-01-11 05:44
)
如果这个接口方法会有何界面的消息通信,有可能冻住的,如果这样的话,就不要在非界面线程里调用这个接口方法,试一蛤post message给界面,让界面去调用它。
(45字)
(
周星驰
[423]
2006-01-11 05:45
)
这个接口方法仅仅是将数据调用 Indy UdpServer 把数据发送出去,并没有刷新界面。并且,类似的代码,我写一个简单的实验程序,就没有界面被冻住的问题。
(空) (
pcplayer
[554]
2006-01-11 06:11
)
不过,发消息的方法多半对这个问题的解决有用。
(空) (
pcplayer
[270]
2006-01-11 06:23
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录