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()
返回一个数组。没有必要将其转换为列表