我想在c#上構建一個win服務(無UI),它所做的全部工作是:在目錄列表上運行並刪除超過X kb的文件。 我想要更好的表現,什麼是更好的方式來刪除文件的條件
有什麼更好的方法來做到這一點? 沒有用於刪除文件中沒有純粹的異步功能,所以如果我想使用異步等待 我可以換這樣的功能:
public static class FileExtensions {
public static Task DeleteAsync(this FileInfo fi) {
return Task.Factory.StartNew(() => fi.Delete());
}
}
,並調用這個函數,如:
FileInfo fi = new FileInfo(fileName);
await fi.DeleteAsync();
我覺得像
foreach file on ListOfDirectories
{
if(file.Length>1000)
await file.DeleteAsync
}
但是在這個選項上,文件將會被1個1刪除(並且每個DeleteAsync將在threadPool的線程中使用)。 ,所以我沒有從異步賺,我可以通過1
也許我想去做1,收集名單X文件,然後刪除它們進行AsParallel
請幫我找到更好的辦法
首先要優化將是*迭代之前'.Length' *過濾。 – Filburt
Filburt已經說過,首先將所有文件都放入滿足條件的列表中,然後在您的刪除方法中使用'Parallel.ForEach'。 [MSDN](https://msdn.microsoft.com/en-us/library/dd992001(v = vs.110).aspx)有一個例子 –
@MongZhu 爲什麼? 你想我會在所有的文件,並把ListForDelete,然後再次運行,並從列表中刪除所有文件? 我不明白你在說什麼,爲什麼 – FADI1987