gpt4 book ai didi

c++ - "Not responding"在 COM 对象执行函数期间

转载 作者:行者123 更新时间:2023-12-02 01:15:58 25 4
gpt4 key购买 nike

我已经解决这个问题好几天了,但没有找到解决方案......

我在 VB.NET 中为 SolidWorks 开发了一个宏。它使用我用 C++ 开发的 DLL 中的 COM 对象。此 COM 对象的函数需要很长时间才能运行(有时超过 30 秒),并且还利用 OpenMP 的并行循环。

我的问题是,当我运行其中一个函数时,大约 10 秒后,程序停止响应,并且卡住了我的 UI! DLL 函数正在运行,我们无法使用 DoEvents() 向 UI 发送更新...

我尝试将该函数放入后台工作程序中,但对于 COM 对象,它不起作用。我尝试的另一件事是让后台工作人员定期访问我的进程以查看它是否响应。但当它停止响应时,我无法强制它回答。我找到的唯一解决方案是更改注册表项 HungAppTimeout 的值,但这适用于我计算机上的所有内容,而我希望它仅适用于我的代码。

您有避免“无人应答”的解决方案吗?

代码示例:

Public Sub StartfunctionCOM()

Dim Myclass as COMClass = new COMClass
Myclass.functiontakemanytime() 'time >10sec

End Sub

最佳答案

我找到了一个解决方案:我在我的 C++ 代码中调用函数 DisableProcessWindowsGhosting 。它不会阻止应用程序“不响应”,但会删除自动 Windows 响应(即标准的“应用程序不再响应,等待还是终止?”消息框)。

关于c++ - "Not responding"在 COM 对象执行函数期间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58446576/

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