For locking I am using a single static object which is global to my application:
public class MvcApplication : System.Web.HttpApplication
{
public static readonly object AppLock = new object();
...
}
Using it for locking in code:
lock(MvcApplication.AppLock)
{
...
}
Let us not consider performance impact for a moment. Can I be 100% sure that I will avoid deadlock in this case?