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

时间:2014-06-04 16:58:53

标签: c# windows-services

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

一旦所有文件全部由服务创建,我使用此代码循环处理文件以进行处理并最终删除。

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,错误显示共享违规。它可能很简单,但我不知道它可能是什么。

2 个答案:

答案 0 :(得分:0)

输入这个输出让我能够弄明白。我在一个using语句中调用iTextSharp来清理文件打开,这纠正了这个问题。

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

答案 1 :(得分:0)

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

还尝试使用FileStream.UnLock解锁文件。

在MSDN for UnLock上查看此文档: http://msdn.microsoft.com/en-us/library/system.io.filestream.unlock(VS.71).aspx

希望这能帮到你!