gpt4 book ai didi

CoUninitialize 函数。如何检查错误以及如何等待完成

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:17 25 4
gpt4 key购买 nike

Ansi-C 函数调用 CoUninitialize .

语法是:

void CoUninitialize(void);

我看不到任何错误处理选项,如何检查 CoUninitialize 是否成功?

在单元测试期间,有一个奇怪的行为,我看到 COM 调用在每次使用我的实现时失败。我认为这可能是由于一些未处理的时间耦合造成的。文档没有告诉我 CoUninitialize 是否阻塞。如果不是,我该如何等待它完成?

最佳答案

CoUninitialize 正在阻塞。它不报告成功/失败状态,因为取消初始化失败是不可恢复的:尝试取消初始化未完成的 COM 事件(尤其是编码(marshal)处理)很可能最终导致访问冲突。 COM 清理尽其所能,但它不能终止一切。然后在阻止 CoUninitialize 调用完成后仍然保持事件状态,开始变得危险。

在您这边,一旦您确保在调用之前终止了所有 COM 事件,您基本上应该盲目地将成功的 COM 初始化调用与 CoUninitialize 配对。

... COM calls fail on every second use

也许你应该关注这些失败。它们与 CoUninitialize 的关系可能是您过早调用了 CoUninitialize,否则应该有不同的原因。或者,您只是没有正确配对初始化/取消初始化调用。

关于CoUninitialize 函数。如何检查错误以及如何等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23828409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com