有没有理由在模块的Sub Main中启动用VB.NET编写的GUI程序(Windows应用程序),而不是直接在表单中?
编辑:程序不会采用任何命令行参数,它将始终作为GUI程序执行.
在VB .NET 1.x中使用Main()的主要原因是添加在加载任何表单之前需要运行的代码.例如,您可能想要检测是否已加载Windows窗体应用程序的实例.或者您可能想拦截AppDomain的任何未处理的异常:
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf MyExceptionFilter
但是下一版本的VB和Visual Studio 2005引入了一个新的应用程序模型,在大多数情况下都不需要Main().您现在可以拦截My.Application.Startup事件以添加在加载任何表单之前需要运行的代码.
请注意,Startup事件处理程序的代码存储在ApplicationEvents.vb文件中,默认情况下该文件是隐藏的.
您可以通过任何一种方式来执行此操作,但是实际上您应该仅将代码保留在与该表单上的操作和用户界面元素直接相关的表单中。应用程序启动代码与UI无关,通常与启动屏幕,检查网络连接,仅验证单个实例,设置用户配置设置等有关。
完成以上各项(或适合您应用的初始化代码)后,Sub Main可以创建主窗体的实例,然后显示该窗体,以便用户可以开始与您的应用程序进行交互。
这会将启动代码与表单代码分开。稍后,当您维护应用程序时,很高兴将两者分开。