Quando é apropriado usar a Monitor
classe ou a lock
palavra - chave para segurança de thread em C #?
EDITAR:
Parece pelas respostas até agora que lock
é um atalho para uma série de ligações para a Monitor
classe. Para que exatamente é a abreviação de chamada de bloqueio? Ou mais explicitamente,
class LockVsMonitor
{
private readonly object LockObject = new object();
public void DoThreadSafeSomethingWithLock(Action action)
{
lock (LockObject)
{
action.Invoke();
}
}
public void DoThreadSafeSomethingWithMonitor(Action action)
{
// What goes here ?
}
}
Atualizar
Obrigado a todos por sua ajuda: Eu postei outra pergunta como um acompanhamento de algumas das informações que todos vocês forneceram. Como você parece ser bem versado nessa área, postei o link: O que há de errado com essa solução para bloquear e gerenciar exceções bloqueadas?