2008-11-22 72 views

回答

15

在VB .NET 1.x中使用主要()的主要原因是用于添加代码需要在加载任何表单之前运行。例如,您可能想要检测您的Windows窗体应用程序的实例是否已经加载。或者您可能希望拦截任何未处理的异常的AppDomain中:

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf MyExceptionFilter 

但VB的下一版本和Visual Studio 2005引入了一个新Application model是由main()的不必要在大多数情况下。您现在可以拦截My.Application.Startup event以添加需要在加载任何表单之前运行的代码。

请注意,Startup事件处理程序的代码存储在默认情况下隐藏的ApplicationEvents.vb文件中。

0

不,如果你总是想表现出这种形式。
是的,如果你有时想用你的应用程序没有GUI,只需使用命令行。

2

是的,我已经做了几次。

其中一个原因是,如果您的应用程序是COM EXE(现在从VB6的角度来讲),那么您希望能够检测EXE被调用的内容(正在启动或正在被某些人使用其他应用程序)。

例如:

Sub Main() 
    If App.StartMode = vbSModeAutomation Then 
     ... 
    Else 
     ... 
    End If 
End Sub 

另一种是,如果你希望你的应用能够处理任何命令行参数。

例如:

Sub Main() 
    If App.PrevInstance Then End 
    If InStr(Command, "/s") > 0 Then 
     Form1.Show 
    ElseIf InStr(Command, "/p") > 0 Then 
     LoadPicture ("c:\windows\Zapotec.bmp") 
    End If 
End Sub 

(从我试图使一个屏幕保护程序中的一个)

+0

恕我直言,EXE需要以Sub Main()开头吗? – Arvo 2008-11-22 13:50:09

4

你可以这样做,但你应该只保留与操作和用户界面元素直接相关的表单。应用程序启动代码与UI无关,通常与启动屏幕有关,检查网络连接性,仅验证单个实例,设置用户配置设置等等。

上述项目(或适用于您的应用程序的初始化代码)完成后,Sub Main可以创建主窗体的实例,然后显示它,以便用户可以开始与您的应用程序进行交互。

这将启动代码从表单代码中分离出来。之后,当您维护应用程序时,您会很高兴将这两者分开。