[我可能对这些错误] TIdTCPServer服务器是Borland C++ builder中的多线程。它处理所有客户的独立线程。这是在Borland C++的帮助下编写的。Borland C++ - 多线程TCPServer问题
现在是我的问题&问题。例如,ShowMessage(String ..)
方法应该在主(gui)线程上调用。但正如我上面所说的,TCPServer是多线程的,在不同线程上处理事件OnExecute
。当我在OnExecute事件中使用ShowMessage方法(它在与主线程不同的线程上处理)时,我得到了奇怪的结果。有时候ShowMessage()
按预期工作,有时在不同的箱子尺寸(无限长,非常长,正常等)上显示没有任何文字。其他用户界面的变化不会产生问题(更新TEDIT,TMemo。只有ShowMessage()
有现在的问题)
我觉得这个问题是调用ShowMessage()
方法不是在主(GUI)线程,但在TCPSERVER的线程是结果由TIdTCPServer在内部为客户端连接创建。 那么我该如何解决它?
我一直在使用不同的架构来尝试实现相同的事情(wxWidget/boost :: asio),我也遇到了类似的问题。解决方案是将需要显示的数据传递给UI线程,然后在该线程中调用ShowMessage。我不确定这是否是正确的解决方案,我不知道如何用Bolrand做到这一点。 – Arthur