C# File.Delete()循环不时挂起

C# File.Delete()循环不时挂起,c#,delete-file,C#,Delete File,所以我有一个应用程序,它需要在某一点上清空一个目录中的所有文件。它拍摄照片并将其放在文件夹中。因为我不想处理现有的文件逻辑,所以我更喜欢在捕获之前清空文件夹。 所以很自然,在这一点上,我调用了一个方法来实现这一点。 以下是我的方法: private void emptyMyFolder() { DirectoryInfo di = new DirectoryInfo(textBox1.Text + @"\my\rest\of\the\path\here\"); foreach (

所以我有一个应用程序,它需要在某一点上清空一个目录中的所有文件。它拍摄照片并将其放在文件夹中。因为我不想处理现有的文件逻辑,所以我更喜欢在捕获之前清空文件夹。 所以很自然,在这一点上,我调用了一个方法来实现这一点。 以下是我的方法:

private void emptyMyFolder()
{
    DirectoryInfo di = new DirectoryInfo(textBox1.Text + @"\my\rest\of\the\path\here\");
    foreach (FileInfo file in di.GetFiles())
    {
        file.Delete();
    }
}
而且效果很好。除此之外,这种方法有时会挂起很长时间。 我在onClick按钮中移动了方法调用,以隔离它并排除其他可能的因素。而且,这个方法调用有时会挂起,应用程序也会变得无响应

奇怪的是,如果当应用程序没有响应时,我使用Windows资源管理器导航到需要清空的文件夹,我会看到那里的大多数文件。。。我将它们全部选中,并尝试手动删除它们。。。但在点击Delete之后,Windows本身会等待5-10秒,然后它会告诉我要删除的文件不存在(因为很明显,我的无响应应用程序中的进程成功地删除了它们)。是的,在Windows告诉我之后,我可以看到文件夹是空的,我的应用程序开始响应

有时,如果我不使用资源管理器尝试手动强制删除文件,我的应用程序会挂起几分钟。。。每次,文件夹中只有35-38个文件。每个文件的最大大小为700kB。所以这应该没有什么问题。 而且,有时候,这个方法调用只需要几分之一秒

我使用Windows 10进行开发,我的应用程序使用VisualStudio 2015社区制作。该应用程序已部署到另一台同样使用Windows 10的计算机上

谁能帮我解决这个问题


我不想尝试使用BAT脚本文件删除文件夹内容…

如何
目录。删除(path,true)
则不必迭代文件。而且,
di.GetFiles()
可能在每次迭代期间被调用。如果要使用循环删除文件,请首先将其捕捉到列表:
var files=di.GetFiles().ToList()现在它不会在每次迭代期间试图找出可能导致锁定的文件列表

你有可能会麻烦你的防病毒软件吗?如果你可以确定地重现问题,请尝试禁用你的防病毒程序或为该文件夹添加一个例外,看看是否有帮助。不,没有防病毒(我是说我禁用它是为了测试你的建议,但行为没有改变)是的,我以管理员身份运行应用程序,以防出现权限问题……这些文件在Dropbox上吗?可能不是这样,但您没有在其他应用程序中使用任何要删除的文件?不,文件是本地的(不是Dropbox)。不,我不在其他任何地方使用这些文件。我不能使用Directory.Delete,因为我只希望删除这些文件,而不希望删除子文件夹。我将尝试List()建议,然后返回youDirectory。Delete也会迭代文件。在Windows中,无法一次性删除整个目录
GetFiles()
返回一个数组。没有必要将其转换为列表