如何删除在其他程序中仍处于打开状态的临时文件?

时间:2010-07-01 22:03:35

标签: c# windows temporary-files delete-file

我的程序写入临时PDF文件(使用Path.GetTempFileName),然后将其传递给默认的PDF处理程序(通常是Adobe Reader)进行显示。我的Main方法中有一个finally块来删除临时文件,但如果我的程序关闭时Adobe Reader仍处于打开状态,则文件仍保持打开状态且无法删除。

一种解决方案就是将它们留在那里并假设用户有一天会清除他的临时文件夹;这些文件每个只有1.5 MB。但是有更好的方法吗?

我以为我曾经读过关于在下次重启时注册要删除的文件的方法,类似于安装程序和Windows Update所做的,但我现在找不到任何关于它的信息。有没有我可以在这里使用的功能?

2 个答案:

答案 0 :(得分:2)

请参阅知识库文章How To Move Files That Are Currently in Use。如上所述,如果您的应用程序仍然运行在那些上,您将需要在NT(包括2000,XP,Vista和Windows 7)和旧版操作系统版本上使用不同的方法。

Pinvoke.net已经管理了Win32 API调用和常量的定义。

答案 1 :(得分:0)

您可以注册或存储打开的文件,然后下次启动应用程序时尝试删除临时PDF文件吗?因此,让您的应用程序下次处理整理。用户 应该已经关闭它。