有关TWSocket在多线程编程时的问题(100分)

  • 主题发起人 主题发起人 zslg
  • 开始时间 开始时间
Z

zslg

Unregistered / Unconfirmed
GUEST, unregistred user!
请问
ProcessMessages:
ProcessMessage:
MessageLoop:
MessagePump:
各有什么用,怎么用?
我在一个窗体中用按钮启动一个包含有TWSocket的线程,如果窗体中有一个TWSocket正在
listen,我的线程就无法与被连接的服务器通讯(无TWSocke Listent时线程是正常的),
是不是要在线程中自己进行消息处理?
我是新手,望大家不吝赐教,最好有线程中TWSocket如何处理消息的代码,谢谢了
 
TWSocket is what?
 
ProcessMessages
主要是让在循环中还能响应鼠标和键盘事件
 
怎么用什么TWSocket 而不用 TServerSocket 和 TClientSocket

后者很轻松
 
可笑的是,我在跟踪调试的时候,一切都是正常的,去掉断点就不正常了,TNND.
为什么?有人有告诉我问题在什么地方吗?我快疯了
PS:
(我已经用TWSocket写了很多的模块,要改成TServerSocket 和 TClientSocket工作量太大)
 
把代码贴出来看看
 
该问题可能是线程中的端口和界面中的一样造成不能访问。
可以尝试在线程中listen之前,先修改侦听端口的port。

同时MessageLoop为使线程不中止而设的循环函数,
该函数使线程在该函数中死循环,一直收到WM_QUIT消息。
因此该函数一般在线程中的Execute函数中使用,使其不停的循环。
该函数所做的动作就是收到一个消息,如果不是WM_QUIT就交给系统处理
如果是则结束循环。

 
TWSocket是ICS的控件中的类TClientSocket和TServerSocket的东西
我不知道你是如何处理多线程的,如果用非阻塞式,就根本没有必要
用线程方式处理,
还有啊,你不会像我们单位的“高手”一样写线程把?
就是在线程的create里建一个TServerSocket,把onread事件关联
主执行线程是空的来做线程把?

 
回张无忌:
当然不是,那样做根本没有利用到线程...嘛...^_^

看来还是你说的对,在多线程中使用非堵塞式WINSOCK控件,行不通...
 
接受答案了.
 
后退
顶部