2009-12-21 62 views
1

我需要再次管理臨時文件夾,我們的應用程序存儲文檔的某些部分,例如在打印和導入到dms之間。如何在應用程序中正確使用臨時存儲

應用程序關閉時應該刪除這些文件,理想情況下也應該在應用程序啓動時刪除這些文件,以防出現問題。

我只是想到一個簡單的類實現IDisposable,可以在Main()中使用using()語句,但不知何故,這感覺很髒。在catch塊中使用Directory.Delete(path, true);捕獲所有IOException s在過去並沒有真正可靠的工作。

關於如何實現這樣一個功能的智能方式的任何意見?任何推薦?

實際使用的路徑與我們無關,但我們現在確實使用%AppData%\[Programname]\Temp

是否有可能在Windows上創建非常臨時的文件,這些文件在關機時被刪除?

thx你的時間。

+0

如果你打算在應用程序啓動時刪除它,那麼如果在應用程序關閉期間Directory.Delete(path,true)失敗,那麼它可能不是什麼大不了的事情? – Tarydon 2009-12-21 11:58:10

+0

當然,這些文件不應該持續到下次重新啓動。如果在應用程序關閉時失敗,很可能在啓動時再次失敗 - 如果計算機在此期間重新啓動,maybo不會啓動,但這些文件會保留在系統中,直到下一次重新啓動。 – 2009-12-21 12:10:20

回答

0

我沒有看到使用IDisposable方法的問題。另一種方法是在代碼的關閉區域使用try,finally塊並將清理代碼插入到finally塊中,以確保它執行。唯一的問題是如果您使用的是多線程應用程序,那麼您可能需要設置AppDomainUnhandledException事件處理程序。

+0

我對髒代碼的感覺只屬於使用Directory.Delete(path,true);並希望無論如何工作... – 2009-12-21 11:55:21

0

只是一個通知。 Windows對臨時文件有特殊的文件夾:一個在用戶的配置文件和一個\ WINDOWS \ Temp中。

您會發現,如果您的程序因任何原因未刪除臨時文件,用戶將能夠使用Windows Disk Cleanup工具執行此操作。

它看起來像Windows沒有自清潔臨時像在* nix。我發現http://www.tek-tips.com/viewthread.cfm?qid=1314337&page=1。有人建議編寫將在LogOff上執行的自定義腳本。希望這可以幫助。

相關問題