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,错误显示共享违规。这可能是一些简单的东西,但我不知道它可能是什么。
键入这个练习使我能够弄清楚它。我在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
希望这对你有帮助!