Directory.GetFiles
或Directory.EnumerateFiles
会与未找到的异常文件发生冲突,因为我在日志中看到错误了吗?thread1:
foreach (var file in
Directory
.EnumerateFiles(serverConfig["stagingFolder"])
.Select(s => new FileInfo(s))
.Where(s =>
!s.Name.StartsWith(".")
&& !s.Name.EndsWith(".tmp")
&& !s.Name.EndsWith(".stdf.gz")
&& s.Length < size))
thread2
foreach (string file in
Directory
.EnumerateFiles(serverConfig["stagingFolder"], "*", SearchOption.TopDirectoryOnly)
.Where(s =>
!new FileInfo(s).Name.StartsWith(".")
&& !s.EndsWith(".tmp")
&& !s.EndsWith(".stdf.gz")
&& new FileInfo(s.ToString()).Length > size))
答案 0 :(得分:0)
根据docs,EnumerateFiles不会因FileNotFound异常而失败。所以它是构建FileInfo对象的另一部分。您是否尝试过打印路径和CWD,以便验证是否存在完整路径?也许您需要将文件称为new FileInfo(serverConfig["stagingFolder"] + Path.PathSeparator + s)
要回答您的其他问题,EnumerateFiles
应该是线程安全的。文档没有明确说明,但没有理由假设EnumerateFiles
函数调用彼此共享隐藏状态。