我的服务在从电子邮件帐户中删除文件后删除文件时遇到问题。
一旦所有文件全部由服务创建,我使用此代码循环处理文件以进行处理并最终删除。
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,错误显示共享违规。它可能很简单,但我不知道它可能是什么。
答案 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
希望这能帮到你!