我想在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