我在我的 asp.Net 应用程序中使用 File.Copy(..,..) 方法,它向我显示 system.IO.IOException: The process cannot access the file ..because it is being used by another process。
任何解决方法
提前致谢
我在我的 asp.Net 应用程序中使用 File.Copy(..,..) 方法,它向我显示 system.IO.IOException: The process cannot access the file ..because it is being used by another process。
任何解决方法
提前致谢
您必须 a) 停止正在使用该文件的进程或 b) 等到该文件不再被使用。
你应该阅读这个关于文件锁定的维基百科条目。请特别注意“在 Microsoft Windows 中”段落,您将更好地了解文件锁定的工作原理。
如果另一个程序使用共享模式参数打开了该文件,声明该文件即使进行读取访问也不会被共享,那么您实际上无法从应用程序中强制执行复制操作。
如果您热衷于“扮演上帝”,并且愿意杀死可能锁定您关注的文件的进程,那么您可以尝试使用本文中的信息找出哪个进程正在锁定您的文件线程:如何找出使用 .NET 锁定文件的进程?
更好的策略可能是调查您正在复制的文件被锁定的原因,以及是否可以通过对文件设置限制性文件权限或重新配置正在竞争的软件来避免锁定冲突文件上的锁。例如,如果防病毒程序偶尔会扫描您的应用程序使用的文件夹结构,那么您也许可以告诉软件忽略该特定文件夹。
如果执行时间不重要,您可能会延迟或推迟复制操作。一个简单的策略是在下一次迭代中获取锁定文件。另一种策略可能涉及监听事件,例如来自FileSystemWatcher
类的事件,其想法是等待直到文件在 .NET 中解锁
要找出锁定它的进程,您可以尝试http://www.filehippo.com/download_unlocker/