【问题标题】:How can I delete temporary files that are still open in other programs?如何删除仍在其他程序中打开的临时文件?
【发布时间】:2010-07-01 22:03:34
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以将文件流式传输到 pdf 阅读器的标准输入吗?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您能否注册或存储打开的文件,然后在下次启动应用时尝试删除临时 PDF 文件?因此,让您的应用程序在下次进行整理。用户应该到那时已将其关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2010-10-30
      • 2013-03-08
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多