私は C# 4.5 を使用しており、すべてのフォルダーのファイル共有をスキャンしようとしています。アクセスできないフォルダをスキップして続行したい。私が行ったことは、再帰的に行うことです。これにより、スタックオーバーフローがスローされます。なぜこれが起こるのか理解しています。だから私の質問は: 回避策はありますか?
再帰検索を使用できないため、これをどのように実装しますか? これを簡素化するために使用できるサードパーティのライブラリはありますか? GetFolder
関数は一部の情報のみを抽出し、カスタム クラスを返します。これは正常に機能します。
public void GetFoldersFromFS(string filePath)
{
if (filePath == null)
{
return;
}
Directory.SetCurrentDirectory(filePath);
try
{
foreach (var directory in Directory.EnumerateDirectories(Directory.GetCurrentDirectory()))
{
Resources.Add(GetFolder(new DirectoryInfo(directory)));
GetFoldersFromFS(directory);
}
}
catch (UnauthorizedAccessException e)
{
Log.Warn(e.Message);
}
catch (PathTooLongException e)
{
Log.Warn(e.Message);
}
}