Using lock(obj) inside a recursive call
        Posted  
        
            by Amby
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Amby
        
        
        
        Published on 2010-03-09T08:04:51Z
        Indexed on 
            2010/03/09
            8:06 UTC
        
        
        Read the original article
        Hit count: 283
        
As per my understanding a lock is not released until the runtime completes the code block of the lock(obj) ( because when the block completes it calls Monitor.Exit(obj).
With this understanding i am not able to understand the reason behind the behaviour of the following code.
private static string obj = "";
        private static void RecurseSome(int number)
        {
            Console.WriteLine(number);
            lock (obj)
            {
                RecurseSome(++number);
            }
        }
//Call: RecurseSome(0)
//Output: 0 1 2 3...... stack overflow exception
There must be some concept that i am missing. Please help.
© Stack Overflow or respective owner