我在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