private DirectorySizeItem LoadDirectoryRecursive(FileSizeContext context, DirectoryInfo di) { var dsi = new DirectorySizeItem(context); dsi.Load(di); if (di.FullName.Length >= 230) // 再向下查找超过260个字符有可能引起异常,略过 { return(dsi); } try { foreach (var fi in di.GetFiles()) { var fsi = new FileSizeItem(context); fsi.Load(fi); dsi.Files.Add(fsi); context.ReadedSize += fsi.Size; } } catch (UnauthorizedAccessException) { } _worker.ReportProgress(context.ReadedPercentage, string.Format("正在读取目录: {0}", di.FullName)); try { foreach (var subDi in di.GetDirectories()) { var subDsi = LoadDirectoryRecursive(context, subDi); dsi.SubDirectories.Add(subDsi); } } catch (UnauthorizedAccessException) { } return(dsi); }