Tag: 文件锁定

C#中的日志文件锁定问题

我有一个Windows服务,它将日志文件条目写入XML日志文件。 我在服务运行时维护日志文件的句柄,并在服务停止时关闭,刷新并处理它。 文件写入操作仅由服务进行,我在FileAccess.ReadWrite中打开文件流,而共享设置为FileShare.Read。 我希望能够通过另一个应用程序的XmlRead()调用打开并查看此文件,但是我收到一条错误,指出该文件正由另一个进程使用。 我已经阅读了另一篇关于此的post,并认为这是可能的: 其他主题 。 正在使用的编写器被刷新,关闭和处理,并且每次写入文件流都被刷新。 这在.Net中是不可能的,还是我可能做错了什么? 该代码的缩减版本如下: if (_logFS == null) _logFS = new FileStream(_fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read); if (!initFile) { _logFS.Seek(-13, SeekOrigin.End); } XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(_logFS, settings)) { if (initFile) { writer.WriteRaw(“\n”); writer.WriteStartElement(“Entries”, “http://www.abcdefg.com); } writer.WriteStartElement(“Exception”); // write […]

如何删除其他进程正在使用的文件?

当我尝试删除文件时发生以下exception: 该进程无法访问该文件,因为它正由另一个进程使用。 我的代码看起来像: string[] files = Directory.GetFiles(@”C:\SEDocumentConverter\SOURCE”); foreach (string file in files) { File.Delete(file); } 我怎么解决这个问题?

如何解锁由.NET中的进程锁定的文件

我希望我的应用程序清理它使用的所有临时文件,问题是并非所有临时文件都在我的控制之下,所以我只想“残酷地”解锁它们以便以编程方式删除它们。