【发布时间】:2010-04-04 21:09:32
【问题描述】:
我的 Delphi 程序严重依赖 Outlook 自动化。由于插件和 Outlook 代码编写不当,2007-SP2 之前的 Outlook 版本往往会卡在内存中。
如果 Outlook 被卡住,调用 CreateOleObject('Outlook.Application') 或 GetActiveObject ... 不会返回并让我的应用程序一直挂起,直到 Outlook.exe 在任务管理器中关闭。
我已经想到了一个解决方案,但我不确定这是否是好的做法。
我会在一个单独的线程中使用 CreateOleObject 启动 Outlook,在我的主线程中等待 10 秒,如果 Outlook 挂起(CreateOleObject 没有返回),请让用户从我的程序中终止 Outlook.exe 进程。
但由于我不想强制用户终止 Outlook.exe 进程,作为替代方案,我还需要一种方法来终止程序中现在一直挂起的新线程。
- 这是一种好的做法吗?
- 如何在 Delphi 中终止挂起的线程而不泄漏内存?
【问题讨论】:
-
“写得不好”会被某些人视为煽动性的,或者被我们这些以前处理过这些问题的人视为多余的。兄弟,我分担你的痛苦……
标签: delphi multithreading outlook automation