我编写了一个小型 C# 控制台应用程序,许多用户在共享存储服务器上使用它。它的运行时间应始终小于 3 秒左右,并在后台自动运行以协助用户真正尝试使用的另一个 GUI 应用程序。因此,我想确保程序始终完全退出,无论它是否抛出错误。
在 Application_Startup 中,我具有以下基本结构:
try
{
// Calls real code here
}
catch
{
// Log any errors (and the logging itself has a try with empty catch around it
// so that there's no way it can causes problems)
}
finally
{
Application.Shutdown();
}
我认为有了这种结构,我的应用程序不可能成为僵尸进程。但是,在尝试推送此应用程序的新版本时,我反复发现我无法删除和替换可执行文件,因为“文件正在使用中”,这意味着它挂在某人的计算机上,即使它应该只运行一段时间几秒钟,总是关机。
那么,我的应用程序是如何成为具有我所拥有的代码结构的人们计算机上的一个挂起进程的呢?我错过了什么?
编辑:添加了“应用程序”。为清楚起见解决 ShutDown() 。