环境:
1.在COM+中定义了一个全局变量A,生成一个COM+实例
2.为该实例赋值为A=1
问题:
1.
当我为COM+创建二个实例后,实例二的全局变量A也为1,为何不是每个实例有自己的值呢???
2.
是不是多个实例共享一个进程空间(dllhost.exe)?
3.
如果想使各实例拥有各自的变量的话,只能用类成员吗?谢谢大家~

解决方案 »

  1.   

    定义在 COM 实现类里的才是分开的嘛全局变量定义在 threadvar 下面也能达到这样效果, 不过在ThreadingModel为 tmBoth 时这样就不可靠com+ 也能指定为单实例, ThreadingModel 为 tmSingle, 这样就会每个对像产生一个新实例
      

  2.   

    如果用Single线程模型的话,每当有一个Client连接,系统就会用一个独立的dllhost.exe来调用COM+?
    如果是这样的话,执行速度可能会是个问题~
      

  3.   

    不推荐在com+中定义全局变量。除非有特殊用途
      

  4.   

    对,Single线程模型对应独立的 dllhost.exe,Single模型在2k3上已经很少出现了, com+全局变量是必需的,不过一般这样的全局变量是一个对像,里面应有对应的Lock,Unlock方法(TCriticalSection)