У меня есть следующий цикл foreach:
using System.IO;
//...
if (Directory.Exists(path))
{
foreach(string strFile in Directory.GetFiles(path, "*.txt"))
{
// do something, possibly delete the file named strFile
}
}
Могут ли быть побочные эффекты при удалении файлов в каталоге, который в настоящее время используется для цикла foreach?





GetFiles возвращает массив, а не итератор, поэтому операция завершается к тому времени, когда вы ссылаетесь на первый файл. Кроме того, он возвращает только имена файлов, а не дескриптор файла, поэтому вы должны быть в полной безопасности, выполняя любые операции с ним.
Счетчик не запрашивает каждое обращение, так что все должно быть в порядке - при этом сказано, что если файл появится в папке, пока вы находитесь в процессе, он не будет удален.