Что является причиной ошибки поиска рекурсивного ресурса mscorlib - PullRequest
0 голосов
/ 04 октября 2019

Ошибка, показанная на следующем снимке экрана, возникает спорадически:

enter image description here

Само приложение находится в неуправляемом C ++ с использованием объектов COM и .NETобъекты (в C # и VB) через COM-взаимодействие.

В нашем коде есть только две функции из трассировки стека

McWrapperControl.ControlHost.InvokeMethod

Public Sub InvokeMethod(ByVal Member As String, ByVal NumArgs As Integer, ByVal Args As Object)

  Try

    Dim ArgsType As Type = Args.GetType()
    Dim ArgsArray As Object

    If NumArgs = 0 Then
      ArgsArray = Nothing
    ElseIf ArgsType.IsArray Then
      ArgsArray = Args
    Else
      ArgsArray = {Args}
    End If

    InvokeMethod_ArgsArray(Member, ArgsArray)

  Catch ex As Exception
    ReportError.ShowErrorDialog(ex, "")
  End Try

End Sub

и McWrapperControl.ControlHost.InvokeMethod_ArgsArray

Public Sub InvokeMethod_ArgsArray(ByVal Member As String, ByVal ArgsArray As Object)

  Try

    Dim Target As Object = ContainedControl()
    If Target IsNot Nothing Then
      Dim TargetType As Type = Target.GetType()
      TargetType.InvokeMember(Member, BindingFlags.InvokeMethod, Nothing, Target, ArgsArray)
    End If

  Catch ex As MissingMethodException
    'Ignore this error
  Catch ex As Exception
    ReportError.ShowErrorDialog(ex, "")
  End Try

End Sub

В этом случае я вполне уверен, что возникает исключение MissingMethodException, но это следует перехватить и проигнорировать. Очевидно, я мог бы предотвратить эту ошибку, проверив существование именованного метода, прежде чем пытаться вызвать его.

Кроме этого, кто-нибудь может объяснить, что может вызвать эту рекурсию?

...