我应该如何异步使用Directory.EnumerateFileSystemEntries()?

时间:2012-11-21 16:52:06

标签: c# async-await

我正在使用C#和.Net 4.5在VS 2012中创建一个项目。我需要遍历目录树,但我想异步地执行它。我想我将不得不对Task类做些什么,但我不确定。我还需要能够报告该过程的进展情况。

2 个答案:

答案 0 :(得分:2)

将整个函数包装在Task.Run(()=>{ ... });中,它将在线程池线程中异步运行。

答案 1 :(得分:0)

您可以使用BackgroundWorker。它非常有用,因为它可以实现RunWorkerProgressRunWorkerCompleted事件处理程序,您可以使用它们来报告进度并找出它何时完成处理。关于进度,您将无法仅使用方法Directory.EnumerateFileSystemEntries()来估计已完成的工作部分(因为您不知道将有多少目录/文件),但您将能够向用户显示您处理(或类似)的路径数量。