有时,运行此代码后,没有“foo”目录:
string folder = Path.Combine(Path.GetTempPath(),"foo"); if (!Directory.Exists(folder)) Directory.CreateDirectory(folder); Process.Start(@"c:windowsexplorer.exe",folder); Thread.Sleep(TimeSpan.FromSeconds(5)); Directory.Delete(folder,false); Directory.CreateDirectory(folder);
看来windows资源pipe理器保持对文件夹的引用,所以最后的CreateDirectory没有任何关系,但是原来的文件夹被删除了。 我如何修复代码?
编辑:对不起,我的问题不清楚。 我的目标是创build一个空的“富”目录。 如果该目录已经存在,我将其删除并重新创build。 问题是,如果windows资源pipe理器正在查看该目录,则CreateDirectory调用有时会自动失败。 没有例外, 该目录只是没有创build。
上面的代码重现了我的电脑中的问题。 只有最后两行属于我的实际应用程序。 以前的行是设置。 运行代码后,“foo”总是存在吗? 在我的电脑中,情况并非如此。
防止Winform被最大化?
windows 7将如何编程? .NET仍然是国王?
LRU文件caching和在windows目录中查找文件的成本
统计在特定用户login下运行的单个进程的所有实例的最佳方法是什么?
从远程服务器读取证书哈希
目前,我手动删除foo的每个文件和子目录。
检测外部进程是否交互式,并有任何可见的用户界面
是WPF仍然相关,我可以在我的C#窗口应用程序中使用它?
在UWP中设置PasswordBox的alignment方式
如何更改Powershell中列表框的字体大小
从windows服务中杀死一个进程
既然你没有提供细节(如例外,错误),我会认为这是问题。
我认为问题是当您运行命令删除文件夹时,资源管理器仍在运行。 这可能是一个锁定问题。
Directory.Delete(folder,false);
要么是,要么有一些其他应用程序访问该文件夹或其子文件夹或文件 ,如果偶然的话。
如果可能的话,我建议不要通过资源管理器或任何其他应用程序来触摸文件夹,并等待资源管理器先退出,然后再删除该文件夹。
Process p = Process.Start(@"c:windowsexplorer.exe",folder); Thread.Sleep(TimeSpan.FromSeconds(5)); p.WaitForExit(); //<------- Directory.Delete(folder,false);
另外,请不要忽略抛出的异常和错误,并将它们粘贴到这里(如果有的话)。
希望能帮助到你。
总结以上是内存溢出为你收集整理的防止Windows资源pipe理器干扰目录 *** 作全部内容,希望文章能够帮你解决防止Windows资源pipe理器干扰目录 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)