2009-01-28 70 views
1

我正在使用訪問Outlook個人文件夾的獲取應用程序。在內部,它將Outlook實例上的個人文件夾掛載並處理郵件,然後卸載pst。卸載pst後,我刪除該文件。從Outlook pst文件釋放內存時出現問題

現在的問題是,即使在卸載pst和釋放內存後,當我嘗試刪除pst時,我收到一個異常,表示某個進程正在使用此文件,因此無法刪除它。這個過程就是前景。我使用下面的代碼未安裝並釋放內存:

_application.Session.RemoveStore(_personalFolder); 
while (System.Runtime.InteropServices.Marshal.ReleaseComObject(_personalFolder) >= 0) ; 
_personalFolder = null; 

我檢查了很多次,它好像它需要一些時間來釋放內存並沒有明確的時間討論這個。任何人可以幫助我如何刪除文件?

回答

1

看一看KB234228 ("OL97: Outlook .pst File Lock Release Interval Now Configurable")。這是關於Outlook 97,但我猜測它仍然有效。

我想那FileSystemWatcher不會幫助你,因爲沒有「排他鎖定」事件。

因此,也許你可以創建一個工作線程,它不斷嘗試刪除放入隊列中的所有.pst文件。這樣,您的應用程序用戶界面至少可以不間斷地運行。

ProcMon這樣的工具能夠查看應用程序的文件句柄。也許你可以做一個API調用,讓你爲Oulook過程做這件事(我猜這是另一個SO問題的好材料)。這樣,您不必輪詢文件系統,並且可以在鎖定消失時更快速地執行操作。

如果你敢,你甚至可以嘗試立即關閉相關的文件句柄,不再需要輪詢/等待。