Получение исключения в "Dim mdi as new MDIParent1" в VB.NET
Я получаю исключение в этом коде:
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.StackruException 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
3 ответа
Проблема в том, что у вас есть рекурсивный вызов, который никогда не заканчивается.
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 (),
и так до бесконечности (или до тех пор, пока система не сгенерирует исключение StackruException).
Когда вы создаете экземпляр MDIParent1
ты звонишь getApplication()
, Когда вы звоните getApplication()
вы создаете новый экземпляр MDIParent1
, Это бесконечная рекурсия, приводящая к исключению переполнения стека.
Что вы на самом деле пытаетесь сделать с этим кодом?
Получаете ли вы такое же исключение, если назначаете New отдельно от Dim?
Dim variable as DataType
// ...
Public Sub InitStuff()
Set variable = New DataType