在过去,我通常会在KeyDown
子广告中添加以下行,以便结束我的申请:
If e.KeyCode = Keys.Escape Then End
但是,在阅读End
实际执行的文档时,结果发现它可能是在释放资源等方面结束应用程序的最糟糕方式之一。
所以现在我试图找到推荐的方法来终止应用程序,这将正确处理所有资源等。我已经在SO上发现了这两个问题(here和 here)但我无法得出正确答案的真实含义。
first link上接受的答案表示将Close()
应用于所有表单是正确的方法,并将释放所有正确使用的资源。这在多个表单的应用程序中并不方便,建议进一步向下Application.Exit()
,甚至:
Application.Exit()
End
即使第一行失败,也一定会确保程序结束。
另一方面,second link上接受的答案说" 你永远不必在设计合理的应用程序中调用Application.Exit()
&#34 ;,与上述内容相矛盾,并在{。}}更高版本中回答Application.Exit()
在.Net的更高版本的所有表单上调用Close()
。
这让我感到困惑 - Application.Exit()
出了什么问题?
如果它没有问题,那么我认为最合适的是:
Application.Exit()
End
还是过度了?否则,Application.Exit()
什么时候不起作用(除非我编写取消它的代码)?
注意:虽然这个问题适用于我制作的所有程序,包括具有多种表单的程序,但我最近已经开始使用套接字(使用TcpClient/Listener
类)在计算机之间建立连接,并希望了解与之相关的任何其他信息。这在连接过程中终止程序时。我的recent question中的评论向我保证,调用Socket.Close()
甚至不是必需的,但现在我意识到这可能不完全正确,因为我之前使用End
终止。