以快速方式复制移动和删除文件时拒绝访问

时间:2014-07-05 19:02:22

标签: c# .net

感谢您花时间阅读本文。 我已经证明了管理一些文件和文件夹的概念。 这里的问题是在执行期间,这个逻辑抛出System.UnauthorizedAccessException并不总是在同一时间,例如,我似乎在逻辑尝试移动文件时,文件尚未创建。 我可以解决它把Thread.Speep但我真的不喜欢它。 有人有什么想法吗? 谢谢!!!

public class FileManager
{
    public async Task DoStuff()
    {
        await Task.Run(() =>
        {
            var count = 0;
            while (count <= 100000)
            {
                Task.Run(() => File.Create("example.txt").Dispose()).Wait();
                Task.Run(() => File.Copy("example.txt", "test/example.txt")).Wait();
                Task.Run(() => File.Delete("example.txt")).Wait();
                Task.Run(() => File.Delete("test/example.txt")).Wait();
                count++;
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

可能是病毒扫描程序或类似的系统服务干扰。通过在删除之前重命名来解决:

var tmp = Guid.NewGuid().ToString("n");
File.Move("example.txt", tmp);
File.Delete(tmp);