According to the docs:http://msdn.microsoft.com/en-us/library/ms682608.aspx
"A thread must call LeaveCriticalSection once for each time that it entered the critical section."
Which seems pretty clear. Even without reading them, it would be good to do a Leave for every Enter. At worst you are wasting your time. At best, it is needed.