Mat*_*att 1 .net c# filesystems
在C#中使用Directory.GetFiles(),有没有办法在找到文件时启动线程?
行为似乎是"找到所有文件"然后在每个文件上执行您需要的操作.是否有另一个类允许一个人在找到文件时启动线程(达到一定数量)?
你需要打电话Directory.EnumerateFiles,这是.Net 4.0的新手.
这个方法返回一个懒惰的可枚举; 每次调用时MoveNext(),它都会在文件系统中查询下一个文件.
你可以像这样开始你的线程:
foreach(var dontUse in Directory.EnumerateFiles(...)) {
string path = dontUse; //Create a new variable for each closure
ThreadPool.QueueUserWorkItem(delegate {
...
});
}
Run Code Online (Sandbox Code Playgroud)
临时变量是确保每个委托闭包引用单独变量所必需的; 否则,他们都会分享相同的价值,造成麻烦.