我的 Delphi 程序严重依赖 Outlook 自动化。由于插件和 Outlook 代码编写不当,2007-SP2 之前的 Outlook 版本往往会卡在内存中。
如果 Outlook 被卡住,调用 CreateOleObject('Outlook.Application') 或 GetActiveObject ... 不会返回并保持我的应用程序挂起,直到 Outlook.exe 在任务管理器中关闭。
我已经想到了一个解决方案,但我不确定这是否是好的做法。
我会在一个单独的线程中使用 CreateOleObject 启动 Outlook,在我的主线程中等待 10 秒,如果 Outlook 挂起(CreateOleObject 没有返回),请让用户从我的程序中终止 Outlook.exe 进程。
但由于我不想强迫用户终止 Outlook.exe 进程,作为替代方案,我还需要一种方法来终止程序中现在一直挂起的新线程。
- 这是好习惯吗?
- 如何在不泄漏内存的情况下终止 Delphi 中的挂起线程?