李战:
总算解决了切换输入法导致多线程程序不响应的问题(是pcplayer老大勇于探索的精神感动了我)
[阅读: 1553] 2007-06-27 00:55:48
不过,这次不是我的人品问题,而是Borland的人品问题。
著名的TSocketConnection控件有一个很好但几乎不用的功能,就是SupportCallBacks,可以支持从服务器端回调客户端控件的方法。并且SupportCallBacks属性默认是TRUE的。
TSocketConnection如果发现SupportCallBacks=TRUE, 就会创建两个东西,一个是一个不可见的Window Handle,一个是用于Socket传输的线程。而此传输线程竟然以这个Window Handle为中心建立了一个消息循环机制,以此来监控服务器的回调等等。
可能就是这个线程和自己的消息循环,与输入法的初始化线程在输入法某些消息上发生冲突,或者线程同步有不周到的地方,导致程序不响应。
关掉TSocketConnection的SupportCallBacks,就不会创建监控回调的线程和消息处理环境。一切都正常了!
解决方案很简单吧?转的弯子可不小哟
不是pcplayer谈起他的问题,我还没时间去分析这个问题,虽然两个问题的原因不一样,但总算绕开了这个难题。高兴中...
李战(leadzen)