Vb.net My.Application启动事件

Vb.net My.Application启动事件,vb.net,visual-studio-2013,Vb.net,Visual Studio 2013,我正在重写一个我们已经使用多年的用于打印运输标签的应用程序,因为在这些年里,许多程序员已经在其中添加了一些细节,而且维护起来越来越困难 在考虑设计选择时,我偶然发现在ApplicationEvents.vb中捕获了应用程序的启动事件,我认为这对于这个应用程序来说是一个不错的选择,因为只有在一次打印超过10个标签时,才会显示主窗体(如果是,则显示进度条,但通常一次只显示一个标签,因此不需要进度条) 现在,我不确定这是否是一个好的选择,但在使用它时,我发现如果不满足某些条件(无效的命令行参数、在预期

我正在重写一个我们已经使用多年的用于打印运输标签的应用程序,因为在这些年里,许多程序员已经在其中添加了一些细节,而且维护起来越来越困难

在考虑设计选择时,我偶然发现在ApplicationEvents.vb中捕获了应用程序的启动事件,我认为这对于这个应用程序来说是一个不错的选择,因为只有在一次打印超过10个标签时,才会显示主窗体(如果是,则显示进度条,但通常一次只显示一个标签,因此不需要进度条)

现在,我不确定这是否是一个好的选择,但在使用它时,我发现如果不满足某些条件(无效的命令行参数、在预期位置找不到网络目录以及其他一些条件),则需要退出此事件中的应用程序。我无法确定如果出现上述情况,如何退出应用程序。我发现唯一接近的方法是将
StartupEventArgs.Cancel
设置为
True
,但文档说明这只会停止加载主窗体,如果设置为True,则应将代码指向dif不同的处理路径

是否有“正确”的方法在启动事件中退出应用程序?我已尝试使用不存在的
My.application.Shutdown
,以及出现错误“派生类无法引发基类事件”的
RaiseEvent Shutdown()

此处链接的是我用于研究的主要文件(以及链接页面上的相关链接):

您可以使用
End
立即终止进程,请注意:

  • 这将过早地终止该过程
  • 正在写入的任何文件都可能损坏
  • 与本计划相关的任何其他活动将被终止
为了防止文件损坏,您可以使用“完成”然后终止程序的子例程,例如:

Private Sub finishUp()
    [..close files, forms, here..]
    End
End Sub
我自己为几个月前制作的gameserver程序做了这项工作;该程序需要在SQL数据库中记录启动和关闭时间。我让它在类似于上面的子程序中记录关闭时间


请注意,相同的子例程可以(也可能应该)当您需要在任何其他时间关闭程序时使用。

您只需将StartupEventArgs的Cancel属性设置为True,如果它是方法中的最后一部分,则不会停止加载…@RianBattle使用
End
完全可以;如果您需要释放资源、保存文件等,则创建一个在执行
End
之前执行该操作。@uoɯuoɹqʎuoʎqɔ这似乎是最好的方法,我将尝试限制在启动事件中实际打开的资源数量,以便在清理之前更少可能出错。谢谢。@RianBattle正如uoʍuoɹqʐ所解释的,您可以使用End。这里有一个小提示,您应该与他人合作nsider:End在不处理任何可能打开的资源的情况下终止您的应用程序,您应该在使用它之前尝试完全关闭。例如,如果您的应用程序有任何打开的表单,您应该在控件到达End语句之前关闭它们。谢谢你们的帮助,我非常感谢!谢谢!到目前为止,我所拥有的一切open是一个数据库连接,但我刚刚开始充实启动事件中需要的所有内容。我将这样做,并确保添加我在启动事件中打开的任何内容,以确保它在停止执行之前正确关闭。