【发布时间】:2015-06-16 15:19:20
【问题描述】:
从this thread 开始,我正在尝试使用以下内容制作一个 C++Builder XE5 应用程序:
- 主要形式
-
TIdTCPClient -
TThread用于该TIdTCPClient的连接,它打开套接字,发送请求,然后无限期地监听多个响应 - 在套接字上发生的操作将导致主窗体上的更新
我找不到任何例子;据我所知,从 Indy Demos 页面链接的示例都没有在其客户端中使用任何线程。
我的问题是:
- TIdTCPClient 应该在主窗体上(作为设计时组件),还是应该是线程类的成员变量?
- 在 TIdTCPClient 触发的事件中,事件处理程序(我的主窗体的成员函数)中的代码是否需要同步?
- 主 VCL 线程和客户端线程对 TIdTCPClient 对象进行函数调用是否安全?
目前我在主窗体上采取行动以响应每个事件,以及响应在套接字上接收数据。目前我的代码充满了临时变量和存根函数,因为Synchronize 需要一个void(void) 闭包,而且它很意大利面。所以我想知道我是否采取了根本错误的方法。
【问题讨论】:
标签: multithreading c++builder indy vcl