"Not responding" 在从 COM 对象执行函数期间

"Not responding" during the execution of function from COM object

我已经好几天没找到解决办法了...

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

我的问题是,当我 运行 其中一个函数时,大约 10 秒后,程序停止响应,并且冻结了我的 UI! DLL 函数是 运行ning,我们无法使用 DoEvents()...

向 UI 发送更新

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

您有避免 "no answer" 的解决方案吗?

代码示例:

Public Sub StartfunctionCOM()

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

End Sub

我找到了一个解决方案:我在我的 C++ 代码中调用函数 DisableProcessWindowsGhosting。它不会阻止应用程序 "not responding",但会删除自动 Windows 响应(即标准 "Application does not respond anymore, wait or kill?" 消息框)。