VB.NET运行很长时间的应用程序的最佳实践?

时间:2015-05-06 10:39:15

标签: vb.net crash formclosing

我在vb.net上创建了一个应用程序,有时需要几个小时才能完成,我注意到在等待某些进程完成时它会经常崩溃。

例如:

我的应用使用Form.Show()打开应用程序流程中需要的其他3个表单。这些表单有时可能需要几个小时才能完成,当它们正在运行时,我的mainform处于非活动状态,只等待form.formclosing()事件发生,此时它将执行清理代码并退出应用程序。我的问题是,当我的主代码生成的表单关闭时,它有时会在Windows日志文件中使用“System.Reflection.TargetInvocationException”错误导致应用程序崩溃。我知道崩溃的地方,我只是不知道如何防止它崩溃。

所以在mainform.load()我有表格的附加工具:

AddHandler Form1.FormClosing, AddressOf Form1Closed
AddHandler Form2.FormClosing, AddressOf Form2Closed

以及后面的布尔Dims:

Dim F1Closed As Boolean = False
Dim F2Closed As Boolean = False

然后,应用程序显示表单:

Public sub StartForms()
    form1.Show()
    form2.Show()
end sub

那就是那个sub的结束,然后mainform继续待机,直到:

Public Sub Form1Closed()
Try
        F1Closed = True

        If F2Closed = True Then
            CloseApp()
        End If
Catch Err as Exception
System.IO.File.AppendAllText("C:\Error.txt", Err.ToString)
end try
    End Sub
Public Sub Form2Closed()
Try
        F2Closed = True

        If F1Closed = True Then
            CloseApp()
        End If
Catch Err as Exception
System.IO.File.AppendAllText("C:\Error.txt", Err.ToString)
end try
    End Sub

我的密切代码:

Public Sub CloseApp()
    Try

        For i As Integer = System.Windows.Forms.Application.OpenForms.Count - 1 To 1 Step -1

            Dim form As Form = System.Windows.Forms.Application.OpenForms(i)

            form.Dispose()
        Next i
    Catch ex As Exception
    Finally
        Me.Dispose()

        Environment.Exit(0)
    End Try
End Sub

在Form1.FormClosing或Form2.FormClosing期间,应用程序只是因为上面的调用错误而崩溃。

即使在事件中使用try..catch,我也无法获得更多细节。

非常感谢任何帮助..

编辑: 添加了我试图使用的try..catch

0 个答案:

没有答案