调用COM组件时的 CoInitialize跟CoUninitialize时机

调用COM组件时的 CoInitialize和CoUninitialize时机
看到大部分的教程都是象下面的代码这样写的

void foo()
{
    CoInitialize(NULL); 

    // Reading configuration 

    CoUninitialize();
}

我的问题是:我有10个方法要调用COM,那是不是我的10个方法中都要象上述代码一样,不断的初始化和结束初始化呢?

度娘了一下,有的说应该在程序开始时,有的说应该在线程开始时,

如果是COM调用另一COM呢?
------解决方案--------------------
你要理解com实例这个概念
如果你的程序是单线程的 那一定是程序开始时候init 结束时uninit
如果你的程序是多线程的 再那个线程里调用了com 都要在线程开始的时候init 结束时uninit
当然了 你应该自己多看看书 看看资料 com多线程实际上还有更复杂的情况 

至于你说的com调用com 不用初始化 那叫做复合或者聚合 看看com这方面的知识吧
------解决方案--------------------
以线程为单位(会引出套间的概念)
可以线程的开始和结束调用
------解决方案--------------------
嗯,以线程为单位来调用, 线程开始CoInitialize(NULL); 
线程结束CoUninitialize();