我写了一个小型C#控制台应用程序,供许多用户在共享存储服务器上使用。它的运行时间应该总是在3秒钟左右<,并在后台自动运行,以帮助用户真正尝试使用的另一个GUI应用程序。因此,我想确保程序总是完全退出,不管它是否引发错误或不是。如何确保C#控制台程序总是退出?
在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()。
不要从共享驱动器运行应用程序。在主应用程序中包含一些升级逻辑,以将控制台应用程序复制到本地计算机,或将逻辑移动到主应用程序中,以便在单独的线程上运行。 –
'ShutDown()'究竟发生了什么? –
@KyleTrauberman,我认为你是对的,我将把它放在后面,但我仍然想知道确保C#应用程序始终关闭的最佳实践/最佳方法,无论出现什么错误或什么情况。 – JoeCool