Sobes.tech
Middle

Pode-se usar uma string como objeto para bloqueio na construção lock?

sobes.tech IA

Resposta da IA

Não é recomendado usar uma string como objeto de bloqueio (lock) em C#. Embora seja tecnicamente possível, as strings no .NET são imutáveis e podem ser internadas, o que significa que literais de string iguais podem referenciar o mesmo objeto na memória.

Isso leva ao risco de diferentes partes do programa usarem acidentalmente a mesma string para bloquear, o que causará comportamentos imprevisíveis e problemas de sincronização.

A abordagem correta é usar um objeto privado separado para o bloqueio:

private readonly object _lockObj = new object();

lock(_lockObj)
{
    // seção crítica
}

Assim, você garante que o bloqueio seja controlado apenas pelo seu código e não se sobrepõe a outras partes do programa.