FileSystemWatcher クラスを使用してフォルダーを監視し、イベントが発生したときにリストを更新しています。次のクラスを使用して、各ファイルの情報を保持しています。
public class FileItem
{
public string Name { get; set; }
public string Path { get; set; }
}
次のリストには、その情報のコレクションが含まれています。
public static List<FileItem> folder = new List<FileItem>();
リストにいくつかの FileItem オブジェクトを追加しました。ただし、一致する名前を持つ特定のアイテムを削除するには、列挙が変更され、ファイルが削除されるとすぐに例外が発生するため、 foreach() ループを使用することはできませんでした。そこで、項目が削除された後に foreach() ループから抜け出すために (同じ名前のファイルが 1 つしかないため) ブレークを追加しました... しかし、それが最も効率的な方法かどうかはわかりませんそれ。もっと簡単で適切な方法はありますか?削除するための私のコードは次のとおりです。
private static void OnChanged(object source, FileSystemArgs e)
{
if (e.ChangeType == WatcherChangeTypes.Deleted)
{
foreach (var item in folder)
{
if (item.Name == e.Name)
{
folder.Remove(item);
folder.TrimExcess();
break;
}
}
}
}