我有一个应用程序,我创建了一个线程,必须在超时间隔内检查数据库中是否有特定类型的数据。该线程完全负责创建数据库连接,查询和关闭连接。我只在线程执行中进行一次CoInitialize调用,并重复使用Ado连接和Ado查询以供后续使用。
现在我的问题是,我之前(可能是错误地)在循环中留下了CoUnitialize语句以进行数据库数据检查。这意味着,每次都要完成对CoUnitialize的调用。为什么应用程序没有崩溃?由于没有数据要发布,CoUnitialize应该失败。我对此表示怀疑。
先谢谢
答案 0 :(得分:4)
CoUninitialize
是一个WinApi函数,什么都不带,什么都不返回。由于这些WINAPI函数永远不会抛出异常(AFAIK),因此通过调用它们不会导致应用程序崩溃。当被叫太多次时,CoUnitialize
会默默地失败。
但是,当调用需要初始化COM的代码时,您的应用程序可能会崩溃。您的应用程序不会崩溃可能意味着两件事:代码不需要CoInitialize
,或者其他地方CoInitialize
被调用,可能在您的ADO库中。