2010-10-25 91 views
1

我創建了兩個服務。我想刪除一個文件夾,但該文件夾由我的第一個服務使用。當我執行第一個服務後,我執行第二個服務,它工作正常。但是,當我嘗試同時執行這兩項服務時,它無法正常工作。如何刪除另一個進程已打開的文件夾?

+3

(-1)請問一個正確的問題,目前無法找出你想要做的事情。另外,我會冒昧減少問題中問號的數量:) – 2010-10-25 11:58:26

+0

@Pekka:也許問號是問題主題的一部分? (種文件系統佔位符)。 ;-) – splash 2010-10-25 12:02:03

+0

@splash ahaha,誰知道! :) – 2010-10-25 12:02:25

回答

5

實際上,問題應該是「應用程序中的內容可能會阻止文件夾被其他應用程序刪除」。

可能性是:

  1. 你的服務打開某些文件,該文件夾中,並沒有將其關閉。檢查您在服務中打開的所有文件,並關閉該文件夾中的文件。
    文件如何關閉取決於它們是如何打開的。如果你使用CreateFile(),那麼用CloseHandle()關閉。如果是TFileStream,那麼只需銷燬它。

  2. 您的服務將該文件夾設置爲當前目錄。使用SetCurrentDir選擇其他目錄作爲當前目錄。

+1

然後標題中問題的答案是:你不能,至少不能在Windows下。 (例如,Linux允許刪除正在使用的文件和文件夾,如果您不習慣這些文件和文件夾可能很煩人。) – dummzeuch 2010-10-26 07:15:51

+0

@himself - Number 2不起作用。我試過了。 – Ampere 2013-12-13 16:12:35

1

除非您可以通過發送消息來停止使用文件夾(或其內容),否則在刪除它之前您無法刪除它。

0

如果第二項服務在第二項服務之前啓動,那麼您可以刪除文件夾,但如果兩項服務一起啓動,則無法刪除文件夾。

唯一的區別是您允許第一個服務完成與文件夾一起工作的時間。

需要考慮的事情:

如果你的第一個服務使用的文件夾,那麼你將不能夠像已經提到的,直到你的服務關閉與該文件夾的連接將其刪除。

相關問題