delphi 中使用socket和多线程时和输入法切换冲突的怪异问题:
在delphi中用到socket的一些组件(比如TClientSocket,TSocketConnection等),并且这些组件设置未 notBlocking模式/supportCallback时,如果程序有多线程在运行(循环或者suspend),这是如果在程序中可以输入的地方切 换输入法,则回造成程序失去反应。再测试,发现在线程中不进行涉及到socket时好像不会出现上面的问题。不知道是不是消息冲突什么的造成的。
在delphi中用到socket的一些组件(比如TClientSocket,TSocketConnection等),并且这些组件设置未 notBlocking模式/supportCallback时,如果程序有多线程在运行(循环或者suspend),这是如果在程序中可以输入的地方切 换输入法,则回造成程序失去反应。再测试,发现在线程中不进行涉及到socket时好像不会出现上面的问题。不知道是不是消息冲突什么的造成的。
本文讨论了在Delphi环境下使用socket组件(如TClientSocket)与多线程结合时遇到的一个特殊问题:当程序处于未阻塞模式且支持回调时,在输入法切换的情况下会导致程序失去响应。初步推测可能是消息冲突引起的。
1万+

被折叠的 条评论
为什么被折叠?



