2010-03-23 141 views

回答

0

对案例2不了解,但在案例1中,代理过程肯定会调用CoInitialize()/CoUninitialize()。这是我如何知道这一点。

我们有一个COM对象,我们在COM +中托管,并且它本身使用MS XML 4.当您需要在MS XML 4中创建XML文档对象时,请致电CoCreateInstance()。我们从来没有在我们的COM对象中调用CoInitialize(),但文档创建总是成功的 - 当然代理调用CoInitialize()。如果我们在独立应用程序中执行同样的操作,则文档创建失败,除非我们自己致电CoInitialize()

所以底线是:COM +代理(我确信它也适用于DCOM代理),它自己调用CoInitialize()

顺便说一下,你可以用这个来调查案例2 - 在ISAPI DLL里面调用CoCreateInstance() - 如果成功的话CoInitialize()已经被调用。

+0

感谢您的回复。你知道COM +代理是否加入STA或MTA吗? – arnold 2010-03-24 07:50:22

+0

@arnold:看起来像取决于COM对象的treading模型:http://msdn.microsoft.com/en-us/library/ms681753(VS.85).aspx – sharptooth 2010-03-24 08:36:34