【发布时间】:2016-01-28 09:36:27
【问题描述】:
我正在尝试在 C# 中删除一个文件,但是我收到一条消息,指出该文件是从另一个进程中使用的。我想要做的是检查文件是否存在并关闭它。我正在使用以下函数来检查文件是否打开:
public static bool IsFileInUse(string path)
{
if (string.IsNullOrEmpty(path))
throw new ArgumentException("'path' cannot be null or empty.", "path");
try
{
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read)) { }
}
catch (IOException)
{
return true;
}
return false;
}
我正在尝试在文件使用时关闭它:
bool checking = IsFileInUse(file );
File.Create(file ).Close();
if (File.Exists(file))
{
File.Delete(file );
}
我在 File.Create 行中遇到问题,我收到了消息:
文件正被另一个进程使用。
编辑:我正在尝试使用锁定方法来删除文件。我想删除锁定语句中的文件吗?如何正确使用lock语句?
【问题讨论】:
-
您无法通过任何直接的方法关闭由其他进程打开的文件。
-
因此我应该终止进程以关闭文件,对吧?
-
那是你的申请吗?如果是,那么您可以发送消息以释放它或使用进程间锁
-
其他使用它的进程是什么?是您的应用本身吗?
-
你可以找到很多关于锁、多线程的文章,这就是msdn所说的锁,msdn.microsoft.com/en-us/library/c5kehkcz.aspx
标签: c# asp.net filestream