2012-09-13 24 views
0

我試圖刪除在另一臺機器上打開的空白共享目錄。 如果我直接刪除目錄(右鍵單擊並刪除),它將被刪除。如果在另一臺機器上打開該目錄,如何使用c#代碼刪除共享文件夾?

Stopwatch st = new Stopwatch(); 
     st.Start(); 
while(true){ 
      try 
      { 
       Directory.Delete(pathToDelete, true); 
       Console.WriteLine("Directory Deleted" + "Elapsed time:" + st.Elapsed.Seconds.ToString() + "sec"); 
       break; 
      } 
      catch (Exception e) 
      { 
       if ((e is System.IO.IOException) || (e is System.UnauthorizedAccessException) || 
        (e is System.Reflection.TargetInvocationException)) 
       { 
        Console.WriteLine(e.ToString()); 
        if (st.Elapsed > TimeSpan.FromMinutes(5)) 
        { 
         Console.WriteLine("Can not delete directory "); 
         return; 
        } 

        Thread.Sleep(1000); 
       } 
       else 
       { 
        throw; 
       } 
      } 
     } 

如果目錄在同一臺機器或不同機器上使用共享路徑打開,則不會刪除該目錄。

I found this 但我無法正確理解代碼。

任何人都建議更好的方法? 由於提前

+0

什麼是刪除路徑的字符串值? – Derek

+0

該應用是否以管理員身份運行(如果在Windows Vista或7上)?拋出了什麼確切的異常? – Arran

+0

我已經使用了「C:\ dir」作爲pathToDelete。共享文件夾路徑爲「\\ SPHVM-33821 \ dir」 – naveejr

回答

0

System.IO.IOException:該進程無法訪問該文件「C:\目錄」,因爲它正被另一個進程使用

這意味着,它在使用中,因此你不會能夠將其刪除。如果它像你說的那樣空着,那麼它必須是a)被網絡共享上的某個人使用,或者在服務器上運行一些它正在監視的東西。您可能需要停止服務。

+0

即使我使用共享路徑從另一臺機器打開目錄(不是文件),我可以手動刪除它。 (右鍵單擊並刪除)。這就是爲什麼我認爲應該有一種方法通過代碼刪除文件夾。 – naveejr

相關問題