小编Ond*_*nek的帖子

执行File.Delete后,该文件仍处于DELETE PENDING状态

File.Delete有时候调用文件后仍然存在怎么可能?我使用简单的代码来重现问题File.Open.预期的例外是FileNotFoundException.我检查了Process Monitor v3.05中的操作,文件的结果是"DELETE PENDING"并且返回UnauthorizedAccessException.有人有解释吗?

public class Program
{
    private const string DummyFileName = "dummy.txt";

    private static void Main(string[] args)
    {
        int attempt = 0;
        while (true)
        {
            using (File.Create(DummyFileName))
            {
            }

            File.Delete(DummyFileName);

            try
            {
                attempt++;
                using (File.Open(DummyFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
                {
                }
            }
            catch (FileNotFoundException)
            {
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine("File exists{0}", File.Exists(DummyFileName));
                Console.WriteLine("File remains in DELETE PENDING state in attempt {0}.", attempt);
                Console.WriteLine(ex);
                Console.ReadKey();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# io

9
推荐指数
1
解决办法
1495
查看次数

标签 统计

c# ×1

io ×1