gpt4 book ai didi

vb.net - form.close 和 application.exit 的区别

转载 作者:行者123 更新时间:2023-12-03 09:03:15 25 4
gpt4 key购买 nike

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

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 属性设置为在主窗体关闭时关闭(并非所有打开的窗体都关闭)。这让我想知道为什么我们要遍历每个表单并单独关闭它们,然后调用 Application.Exit()

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

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

谢谢

最佳答案

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

这允许您指定 When startup form closesWhen last form closes
所以逻辑上你不应该需要 Application.Exit .如果你这样做了,那么内存中还有一些其他的对象需要处理(在线程/后台 worker 等上启动的东西)

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

[StartupFormName].Close

或者如果您有最后的表单设置:
Do While My.Application.OpenForms.Count > 0
My.Application.OpenForms(0).Close()
Loop

关于vb.net - form.close 和 application.exit 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16815021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com