删除临时文件时,C# 应用程序无一例外地退出
C# app exits without exception when deleting a temp file
我在 C# 程序 (.Net 4.61) 中有一个 class,它使用 Word 和 Amyuni PDF 套件来构建格式化的 PDF 文件。在此过程中,会在用户的临时文件夹中创建四个临时 PDF 文件:
private string TempFolder = Path.GetTempPath();
进程完成后,我将运行以下清理方法来删除进程中生成的任何临时文件:
private void EraseTempFiles()
{
// For each temp file:
foreach (string tempFile in TempFiles)
{
if (File.Exists(tempFile))
{
File.Delete(tempFile);
}
}
}
这在几乎所有已部署的 Windows 系统(所有 64 位 Windows 7 系统)上都有效,但是在其中一些系统上,当 EraseTempFiles 方法删除第三个临时文件,应用程序立即退出。没有抛出异常(我在 try-catch 中包围了 File.Delete 以确定这一点)。
可以使用 Windows 资源管理器删除文件,没问题。
我试过将所有临时文件保存在不同的文件夹中,并在不改变行为的情况下更改它们的命名方式。 运行 ProcDump 跟踪应用程序没有捕获到任何东西,它只是报告:
[23:54:52] The process has exited.
[23:54:52] Dump count not reached.
我也订阅了未处理的异常事件:
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionHandler);
private void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
System.Windows.Forms.MessageBox.Show(((Exception)e.ExceptionObject).Message);
throw new NotImplementedException();
}
该处理程序也从未被调用。
我从未见过这样没有任何解释的程序退出。似乎 Windows 本身可能由于某些违规行为而终止了进程,但我不知道是什么,因为所有临时文件基本相同,并且可以毫无问题地删除前两个文件。
有人以前见过这种行为吗?
禁用趋势科技后,删除临时文件时程序不再退出。重新启用 Trend Micro,果然,它被杀死了。现在需要确定如何允许 Trend Micro 运行,但不终止我的应用程序!
我在 C# 程序 (.Net 4.61) 中有一个 class,它使用 Word 和 Amyuni PDF 套件来构建格式化的 PDF 文件。在此过程中,会在用户的临时文件夹中创建四个临时 PDF 文件:
private string TempFolder = Path.GetTempPath();
进程完成后,我将运行以下清理方法来删除进程中生成的任何临时文件:
private void EraseTempFiles()
{
// For each temp file:
foreach (string tempFile in TempFiles)
{
if (File.Exists(tempFile))
{
File.Delete(tempFile);
}
}
}
这在几乎所有已部署的 Windows 系统(所有 64 位 Windows 7 系统)上都有效,但是在其中一些系统上,当 EraseTempFiles 方法删除第三个临时文件,应用程序立即退出。没有抛出异常(我在 try-catch 中包围了 File.Delete 以确定这一点)。
可以使用 Windows 资源管理器删除文件,没问题。
我试过将所有临时文件保存在不同的文件夹中,并在不改变行为的情况下更改它们的命名方式。 运行 ProcDump 跟踪应用程序没有捕获到任何东西,它只是报告:
[23:54:52] The process has exited.
[23:54:52] Dump count not reached.
我也订阅了未处理的异常事件:
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionHandler);
private void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
System.Windows.Forms.MessageBox.Show(((Exception)e.ExceptionObject).Message);
throw new NotImplementedException();
}
该处理程序也从未被调用。
我从未见过这样没有任何解释的程序退出。似乎 Windows 本身可能由于某些违规行为而终止了进程,但我不知道是什么,因为所有临时文件基本相同,并且可以毫无问题地删除前两个文件。
有人以前见过这种行为吗?
禁用趋势科技后,删除临时文件时程序不再退出。重新启用 Trend Micro,果然,它被杀死了。现在需要确定如何允许 Trend Micro 运行,但不终止我的应用程序!