【发布时间】:2012-01-07 14:03:47
【问题描述】:
假设我们有 3 个进程,它们按顺序写入特定文件,在某些情况下,当一个进程想要写入文件时,进程关闭(在写入中间),因此另外 2 个进程对文件的访问处于麻烦,我添加了一个控制进程顺序的服务器进程,当进程关闭时会引发一个事件,那么当进程关闭时如何在此事件中释放源(文件访问)。类似File.Release(FilePath);
编辑:
如下写入文件:
try {
if(!File.Exists(FilePath))
throw new Exception("File does not Exist.");
bool Clear = false;
using(StreamReader sr = new StreamReader(FilePath)) {
if(sr.ReadToEnd().Length > 1200)
Clear = true;
}
if(Clear)
using(StreamWriter sw = new StreamWriter(FilePath, false)) {
sw.WriteLine(Text);
sw.Flush();
} else
using(StreamWriter sw = new StreamWriter(FilePath, true)) {
sw.WriteLine(Text);
sw.Flush();
}
} catch(Exception ex) {}
【问题讨论】:
-
向我们展示写入文件的代码。基本上,当您写入文件时,您会打开具有写入访问权限的该文件的句柄。没有其他人可以写入该文件。但是一旦你写完,你应该释放句柄(通常通过调用 Dispose 或 Close 或将代码放入
using块)。 -
@oleksii 查看我更新它的问题。
-
正如 Oleksii 所说,使用关键字“使用”。它隐含的意思是 Idisposable 它将维护句柄并在工作完成时将其处置。这是最好的做法。它的使用方式与用于数据库连接的方式相同。
-
如果您使用的是
using块,则不必致电sw.Close()或sw.Dispose()。 -
@Saeid - 它不应该导致您描述的行为。这是不必要的,因为
using块会为您完成。