form.close和application.exit之间的区别

时间:2013-05-29 13:19:45

标签: vb.net runtime-error

我最近没有上学,作为程序员开始了我的第一份工作。当我们的应用程序超时计时器关闭应用程序时,我们有一个用户报告的错误。我很确定我已经缩小了它,但我很好奇为什么原来的程序员会这样做,如果它是良好的编码实践,如果是这样,我很好奇,如果有人有办法处理这个。我们收到一个关闭后系统错误,因为它发生在主窗体关闭后,所以我们没有得到任何异常日志输入。

timeoutTimer_tick处理程序的关闭功能执行以下操作:

    For iCount As Int16 = Application.OpenForms.Count - 1 To 0 Step -1
        Try
            Application.OpenForms(iCount).Close()
        Catch
        End Try
    Next
    Try
        Application.Exit()
    Catch ex As Exception
    End Try

设置程序时,应用程序属性在主窗体关闭时关闭(不是所有打开的窗体都关闭)。这让我想知道为什么我们循环遍历每个表单并单独关闭它们,然后调用Application.Exit()

我很确定我们的错误是因为所有打开表单关闭后的Application.Exit调用。它没有看到主窗体,因为它在循环期间关闭,并抛出错误。我觉得我们应该使用其中一种,但不是两种。

任何意见或建议?哪个更好,或者更好(或者这个代码应该没有错误,我只是错了)。

由于

1 个答案:

答案 0 :(得分:3)

在WinForms中,您有一个关机模式设置(项目属性>应用程序选项卡)

这允许您指定When startup form closesWhen last form closes

所以逻辑上你不应该需要Application.Exit。如果你这样做,那么你需要处理的内存中还有一些其他的对象(在线程/后台工作者等上启动的东西)

所以如果您有启动表单设置:

[StartupFormName].Close

或者如果您有最后一个表单设置:

Do While My.Application.OpenForms.Count > 0
    My.Application.OpenForms(0).Close()
Loop