在 VB.NET "Dim mdi as new MDIParent1"中获取异常



我在这段代码中得到一个异常:

Imports System.Windows.Forms
Imports System.Text
Imports System.Diagnostics
Public Class MDIParent1
   Private Sub MDIParent1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  MyBase.Load
      getapp.getApplication()
   End Sub
   Public Sub MDIParent1(ByVal value As String, ByVal value1 As String)
      Dim ChildForm As New System.Windows.Forms.Form
      ChildForm.MdiParent = Me
      ChildForm.Text = value1
      ChildForm.Show()
   End Sub
End Class
Public Class getApplications
   Dim w As String
   Dim b As New Process()
   Dim p As String
   Dim mdi As New MDIParent1   'here i am getting exception that is System.StackOverflowException was unhandled   InnerException:..
   Dim i As Integer
   Public Sub getApplication()
      For Each Me.b In Process.GetProcesses(".")
         Try
            If b.MainWindowTitle.Length > 0 Then
               p = b.ProcessName.ToString()
               w = b.MainWindowTitle().ToString()
               mdi.MDIParent1(p, w)
            End If
         Catch
         End Try
      Next
   End Sub
End Class

问题是您有一个永远不会结束的递归调用。

MDIParent1.MDIParent1()调用getApplications.getApplication(),这电话MDIParent1.MDIParent1(),它再次调用getApplications.getApplication(),这电话MDIParent1.MDIParent1(),它再次调用getApplications.getApplication(),这电话MDIParent1.MDIParent1(),它再次调用getApplications.getApplication(),这电话MDIParent1.MDIParent1(),它再次调用getApplications.getApplication(),这电话MDIParent1.MDIParent1(),它再次调用getApplications.getApplication(),这电话MDIParent1.MDIParent1(),它再次调用getApplications.getApplication(),

等等直到无穷大(或者直到系统抛出StackOverflowException)。

创建MDIParent1的实例时,调用getApplication()。当您调用getApplication()时,您创建了MDIParent1的一个新实例。这是一个无限递归,会导致堆栈溢出异常。

你实际上试图用这段代码做什么?

如果你分别从Dim中分配New,你会得到相同的Exception吗?

Dim variable as DataType
// ...
Public Sub InitStuff()
    Set variable = New DataType

最新更新