El patrón habitual para singletons .NET crea una sola instancia por dominio de aplicación. La situación habitual en asp.net es que tienes varios hilos que se ejecutan en el mismo dominio de la aplicación. Esto significa que muy bien podría tener múltiples hilos ejecutando código en su singleton al mismo tiempo.
Tienes que examinar el singleton y determinar (en el mejor de tus capacidades koffreflectorkoff) si es seguro para subprocesos o no. Si mantiene y modifica los recursos compartidos, o si encapsula algún tipo de estado que se almacena entre llamadas a métodos, tenga cuidado.
Es posible que desee envolver el singleton dentro de un segundo singleton que utiliza bloqueos antes de delegar sus llamadas a la que no tiene control. De esta forma, podría tener un control más preciso sobre el bloqueo en lugar de bloquear cada llamada al singleton con un solo bloqueo. También le daría la ventaja de centralizar la ubicación del código de enhebrado ...
-1. Los métodos necesitarían tener bloqueos si así se requiere. Este enlace no entra en esos detalles (solo acerca de cómo crear la clase singleton en sí misma, no su funcionalidad). –
+1. Este comentario no merece -1. De hecho, los métodos pueden necesitar bloqueos, pero esto es independiente de la implementación del propio patrón singleton IMO. – Ben