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.