Я смотрю на код, который был создан, и он использует TryEnter в одном вызове метода и блокирует в других. Итак, вот так:
private readonly object xmppLock = new object();
void f1()
{
if (Monitor.TryEnter(xmppLock))
{
try
{
// Do stuff
}
finally
{
Monitor.Exit(xmppLock);
}
}
}
void f2()
{
lock(xmppLock)
{
// Do stuff
}
}
Это нормально?