In my asp.net
application, i want to cache some data in the HttpApplicationState
.
My code to set the data looks like this:
Application.Lock();
Application.Set("Name", "Value");
Application.UnLock();
When I read the documentation, it says that HttpApplicationState
is implicitly thread safe. But on many blogs it's written that we should use Application.Lock()
and Application.Unlock()
while writing data to the HttpApplicationState
.
On the other hand, I could not find any documentation which says that we should use lock while reading data from HttpApplicationState
or while clearing it (using Application.RemoveAll()
) method.
My questions are:
- Should not we take care of thread-safety when we are calling
RemoveAll
? In my application, it's possible that one thread is reading a data fromHttpApplicationState
whereas other thread could callRemoveAll
. - In this case when reading and clearing
HttpApplicationState
is possible from two different threads at the same time, should reading too not be thread safe?