Ты прав.Если это нежелательно, то учтите, что:
lock(objectLock)
{
//do something
}
Эквивалентно:
Monitor.Enter(objectLock);
try
{
//do something
}
finally
{
Monitor.Exit(objectLock);
}
Вы можете заменить это на:
if(Monitor.TryEnter(objectLock, 250))//Don't wait more than 250ms
{
try
{
//do something
}
finally
{
Monitor.Exit(objectLock);
}
}
else
{
//fallback code
}
Это такжеСтоит посмотреть на перегрузки TryEnter()
и других объектов синхронизации, таких как ReaderWriterLockSlim
.