Учитывая существующий временный каталог (d: \ temp), мы запускаем следующий код
[Test]
public void Test()
{
for (int i = 0; i < 10000; i++)
{
Console.WriteLine(i);
File.WriteAllText(@"d:\temp\file.txt", " ");
File.Delete(@"d:\temp\file.txt");
}
}
Через некоторое время в цикле for мы видим исключение:
System.UnauthorizedAccessException : Access to the path 'd:\temp\file.txt' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamWriter.CreateFile(String path, Boolean append)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
at System.IO.File.WriteAllText(String path, String contents, Encoding encoding)
at System.IO.File.WriteAllText(String path, String contents)
конечно, если мы изменим код, добавив Thread.Sleep (10) вроде:
[Test]
public void Test()
{
for (int i = 0; i < 10000; i++)
{
Console.WriteLine(i);
File.WriteAllText(@"d:\temp\file.txt", " ");
File.Delete(@"d:\temp\file.txt");
Thread.Sleep(10);
}
}
все в порядке, но мы не хотим добавлять режим сна, чтобы все работало.Почему такое поведение?