2011-04-11 109 views
3

有沒有人有樣本或沒有如何刪除線程和c#.net文件夾中的很多文件和子目錄。用c#和線程刪除大量文件和子文件夾

謝謝

+4

這通常是一個壞主意。在並行執行更多操作時,物理磁盤上的磁盤操作往往會減慢。如果你想保持你的UI響應,你可以創建一個'BackgroundWorker',但在這種情況下,更多的線程不會加快速度。 – 2011-04-11 18:46:22

+0

你打算徹底刪除目錄還是隻刪除特定的文件? – 2011-04-11 18:48:28

+0

整個目錄及其中的所有文件/文件夾。 – RPS 2011-04-11 19:05:54

回答

6

最好的方法是致電Directory.Delete(directory, true);這將刪除目錄,所有子目錄和所有文件。不需要線程。

如果您想要異步執行此操作(即在刪除目錄時您的程序執行其他操作),請參閱Calling Synchronous Methods Asynchronously

0

讓它在操作系統上。它知道如何安排這些操作,使其即使在高昂的工作負荷下也能夠快速且良好地執行。如果程序的其餘部分不能被阻止,只需從一個單獨的線程派遣它。

0

如果你想嘗試多線程(我想象,有可能就像是試圖獲得在不可用的網絡資源,其中一個線程池將加快整體時間的情況下):

List<Task> tasks = 
(from c in yourDirList select new Action(() => 
{ 
    try 
    { 
    // do it 
    } 
    catch (Exception e) 
    { 
    // log it 
    } 
}) 
into action 
select Task.Factory.StartNew(action)).ToList(); 

tasks.ForEach(c => c.Wait()); 
+0

這比看起來更難,因爲必須按特定順序完成:在刪除目錄之前,必須刪除目錄中的所有文件和目錄。由於目錄結構是任意深的,因此最終必須包含使目錄刪除等待的邏輯,直到所有子元素都被刪除。 – 2011-04-11 19:40:31

相關問題