我正在使用C#和.Net 4.5在VS 2012中创建一个项目。我需要遍历目录树,但我想异步地执行它。我想我将不得不对Task类做些什么,但我不确定。我还需要能够报告该过程的进展情况。
答案 0 :(得分:2)
将整个函数包装在Task.Run(()=>{ ... });
中,它将在线程池线程中异步运行。
答案 1 :(得分:0)
您可以使用BackgroundWorker
。它非常有用,因为它可以实现RunWorkerProgress
和RunWorkerCompleted
事件处理程序,您可以使用它们来报告进度并找出它何时完成处理。关于进度,您将无法仅使用方法Directory.EnumerateFileSystemEntries()
来估计已完成的工作部分(因为您不知道将有多少目录/文件),但您将能够向用户显示您处理(或类似)的路径数量。