Sobes.tech
Middle

¿Se puede usar una cadena como objeto para bloquear en la construcción lock?

sobes.tech AI

Respuesta de la IA

No se recomienda usar una cadena como objeto de bloqueo (lock) en C#. Aunque técnicamente es posible, las cadenas en .NET son inmutables (immutable) y pueden ser internadas (interned), lo que significa que literales de cadena iguales pueden referirse al mismo objeto en memoria.

Esto conlleva el riesgo de que diferentes partes del programa puedan usar accidentalmente la misma cadena para bloquear, lo que provocará comportamientos impredecibles y problemas de sincronización.

El enfoque correcto es usar un objeto privado separado para el bloqueo:

private readonly object _lockObj = new object();

lock(_lockObj)
{
    // sección crítica
}

De esta manera, garantizas que el bloqueo sea controlado solo por tu código y no se cruce con otras partes del programa.