|
Expertise: Intermediate
Language: .NET
November 6, 2009
Detect Recursive Calls in Your .NET Code
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
Michel Posseth
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible. Submit your tip here.
|