使用OLE出现“因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫”错误导致CreateDispatch失败


最近碰到一个Bug,在使用OLE导出excel的时候CreateDispatch总是失败。
调试进去发现在调用CreateDispatch的时候会提示“0x8001010D:因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫”

Paste_Image.png

在微软的官网上找了相关的错误信息

Paste_Image.png
Paste_Image.png

可以看到这是由于OLE的防死锁机制导致的,根据调用堆栈往回找找果然发现代码中有调用SendMessage。
把SendMessage换成PostMessage之后问题就不再出现了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容