Ваш вопрос не дает очень много контекста, и с количеством информации, которую дают люди, могут быть склонны просто сказать вам, да, может быть, с небольшими, но подходящими дополнениями.
Практика обычно видит блокировкупроисходят в случае экземпляра выделенного object
, обязательно избегая блокировки на this
, так как вы блокируете весь экземпляр текущего объекта, что едва ли является намерением, но в вашем случае мыоднако, я не думаю, что в полной мере знаю, но вряд ли стоит блокировать экземпляр хранилища.
Кроме того, поскольку вы упоминаете взаимодействие между клиентом и сервером, это не так просто.
В зависимости от нагрузки и многих других факторов, вы можете захотеть обеспечить много чтений файла с сервера, но в то же время только одну запись на клиенте, который загружает;для этой цели я бы рекомендовал использовать класс ReaderWriterLockSlim
, который предоставляет TryEnterReadLock
, TryEnterWriteLock
и соответствующие методы выпуска.
Более подробную информацию об этом классе см. в этой ссылке MSDN .
Кроме того, не забывайте использовать try
, catch
и finally
при кодировании в пределах области блокировки, всегда снимая блокировку в блоке finally
.