1.是的
2.我以为可以这样理解:com对象生存在一个apartment中
这个apartment采用了STA线程,因此只能被一个客户端连接所访问
客户端会调用CoInitializeEx函数来创建apartment,由于设置了MultiInstance
所以宿主程序可以创建多个apartment,但是每个apartment中只有一个com对象,也就是RDM
3.一个apartment中可以容纳多个com对象,因此可以在这个apartment中创建
ADOConnection和ADODataSet,同样也可以传入外部的ADOConnection,自己做缓冲
原理是先创建多个全局的ADOConnection,在RDM创建时,分配一个ADOConnection给
RDM,并且做标志,这个标志是需要保护的,可以用TCriticalSection
同理,在析构RDM的时候,也要修改标志位,表示这个连接空闲
其实多个RDM共用一个连接问题也不大,但是一定要保护好标志位,免得浪费连接
同时避免出现ADODataSet忘记释放,一直连在某个ADOConnection上的情况
所以最好要有监控界面