HttpApplicationState class provides two methods Lock and Unlock that allow only
one thread at a time to access application-state variables.
Lock on the Application object causes ASP.NET to block attempts by code running
on other worker threads to access anything in application state. These threads
are unblocked only when the thread that called Lock calls the corresponding
Unlock method on the Application object.