Windows服务正在锁定最后一个创建的文件并且无法删除

本文关键字:文件 删除 创建 服务 锁定 最后一个 Windows | 更新日期: 2023-09-27 18:06:48

我的服务在删除从电子邮件帐户中删除的文件时遇到了问题。

一旦所有的文件都被服务创建,我使用这段代码循环遍历文件进行处理并最终删除。

string[] fileEntries = Directory.GetFiles(ConfigurationManager.AppSettings["InBoundPath"]);
foreach (string fileName in fileEntries)
{
  FileProcessor fileProcessor = new FileProcessor();
  fileProcessor.ProcessFile(fileName);
}

删除工作正常,直到它碰到最后一个有锁的文件。似乎新创建的文件释放了旧文件上的锁,而新文件上有一个新锁。

这是我用来创建PDF的工具。

using (FileStream fs = File.Create(newFileName))
{
  byte[] pdfData = email.GetAttachmentData(index);
  fs.Write(pdfData, 0, pdfData.Length);
}

知道是什么原因导致的吗?我运行了Procmon,错误显示共享违规。这可能是一些简单的东西,但我不知道它可能是什么。

Windows服务正在锁定最后一个创建的文件并且无法删除

键入这个练习使我能够弄清楚它。我在using语句中调用iTextSharp来清理文件打开,这纠正了这个问题。

using (iText.PdfReader pdfReader = new iText.PdfReader(originalFilePath))
{
  pageCount = pdfReader.NumberOfPages;
}

我想这可能会有帮助:https://stackoverflow.com/a/2781509

也尝试使用FileStream。UnLock用于解锁文件。

查看MSDN上的解锁文档:http://msdn.microsoft.com/en-us/library/system.io.filestream.unlock (VS.71) . aspx

希望这对你有帮助!