我的Delphi程序嚴重依賴於Outlook自動化。 2007-SP2之前的Outlook版本由於編寫不好的外掛程式和糟糕的Outlook代碼而導致卡在內存中。如果終止掛起的線程是一個好主意,我該如何安全地做到這一點?
如果Outlook被卡住,調用CreateOleObject('Outlook.Application')或GetActiveObject ...不會返回並保持我的應用程序掛起,直到Outlook.exe在任務管理器中關閉。
我想過一個解決方案,但我不確定是否是好的做法。
我會在一個單獨的線程中使用CreateOleObject啓動Outlook,在我的主線程中等待10秒,並且如果Outlook掛起(CreateOleObject不會返回),則提供用戶從我的程序中終止Outlook.exe進程。
但是因爲我不想強制用戶殺死Outlook.exe進程,作爲替代方案,我也需要一種方法來殺死我的程序中的新線程,它現在一直掛起。
- 這是很好的做法?
- 如何在Delphi中終止掛起的線程而不會泄漏內存?
「寫得不好」將被視爲既可以作爲一些炎症,或由我們這些誰以前也處理這些冗餘。我分享你的痛苦,兄弟... – 2010-04-05 01:23:43