Here's a way you can check whether the current method is recursive. The following method returns True when your application is in a recursive method:
Public Function CheckRecursion() As Boolean
Dim myTrace As New System.Diagnostics.StackTrace()
'If stack layer count less 3 , recursion impossible.
If myTrace.FrameCount < 3 Then
Return False
End If
Dim mh As System.IntPtr = myTrace.GetFrame(1).GetMethod().MethodHandle.Value
For iCount As Integer = 2 To myTrace.FrameCount - 1
Dim m As System.Reflection.MethodBase = myTrace.GetFrame(iCount).GetMethod()
If m.MethodHandle.Value = mh Then
Return True
End If
Next
Return False
End Function