我的帖子无法删除PDF文件。当我调试此解决方案时,该文件正在删除。在服务模式下,它不会被删除。
这是我的示例代码:
Thread Worker = new Thread(new ThreadStart(Start)); //Main Function
Worker.Start();
public void Start()
{
string text=PDFToText(@"C:\1.pdf");
File.Delete(@"C:\1.pdf");
}
private string PDFToText(string filename) // My PDF reader function
{
PDDocument doc = PDDocument.load(filename);
PDFTextStripper stripper = new PDFTextStripper();
string text = stripper.getText(doc);
doc.close();
return text;
}
问题出在哪里?
答案 0 :(得分:2)
可能发生的事情是某些东西(可能是你正在使用的API)锁定了文件,阻止了删除。
当您在调试中执行此操作并逐步执行此操作时,因为您以“慢”速度步进,锁定已被释放,并且文件已成功删除。
你应该将删除代码放在一个带有异常处理程序的重试循环中,该异常处理程序会休眠一秒左右,然后再次尝试,让操作系统有机会放弃锁定。
另一件需要考虑的事情是,假设您在生产中将其作为服务运行,则该服务在不同的用户帐户下运行,而不是通过visual studio进行调试时(假设您没有附加到服务中 - 这里很难说。检查运行该服务的帐户是否具有删除该文件的权限。