It is important in many cases to synchronize access to application variables . In many cases, especially with things such as counters, you want only one thread to access an application variable and alter its contents at any given time. Suppose you have an application counter, and its accuracy is important. Now suppose that two different clients increment the variable at the exact same time. Will the counter be two more than original, or one? There's no way to guarantee the behavior when simultaneous access happens.
Session variables don't succumb to this same problem because there's only one client access to any session variable at a time. The following code shows how to ensure that only a single thread can modify the contents of an application variable. The code calls the Lock() method, alters the variable, and then calls the Unlock() method.
' C# Application.Lock(); Application["SomeKey"]++; Application.Unlock(); ' VB Application.Lock() Application("SomeKey") = Application("SomeKey") + 1 Application.Unlock()