多个couninitialize调用会使应用程序崩溃吗?

Cyp*_*rUS 3 delphi

我有一个应用程序,在其中我创建了一个线程,该线程必须在超时间隔内检查数据库中特定类型的数据。该线程完全负责创建数据库连接,查询和关闭连接。在线程执行过程中,我仅进行一次CoInitialize调用,并重用了Ado连接和Ado查询以供以后使用。

现在我的问题是,我以前(可能是错误地)在循环中留下了CoUnitialize语句用于数据库数据检查。这意味着每次都完成对CoUnitialize的调用。为什么应用程序没有崩溃?由于没有数据可发布,因此CoUnitialize应该失败了。我对此表示怀疑。

提前致谢

The*_*Fox 5

CoUninitialize是一个WinApi函数,它什么都不做,什么也不返回。由于这些WINAPI函数永远不会引发异常(AFAIK),因此您的应用程序不会通过调用它们而崩溃。CoUnitialize当被调用太多次时,只会默默地失败。

但是,当调用需要初始化的COM的代码时,您的应用程序可能随后崩溃。您的应用程序不会崩溃可能意味着两件事:不需要代码CoInitialize,或者CoInitialize在ADO库中调用了其他地方。