我正在使用 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() 循环......但我不确定这是否是最有效的方法它。有没有更简单更合适的方法?这是我的删除代码:
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;
}
}
}
}