Звучит так, как будто вы в основном там. Я не думаю, что вам действительно нужен LockRefreshedTime, хотя он действительно ничего не добавляет. Вы также можете использовать LockAcquiredTime, чтобы решить, когда блокировка устарела.
Другая вещь, которую вы захотите сделать, это убедиться, что вы используете транзакции. Вам нужно обернуть проверку и настройку блокировки внутри транзакции базы данных, чтобы у вас не было двух пользователей, которые считают, что они имеют действительную блокировку.
Если у вас есть задачи, требующие получения блокировок для более чем одного ресурса (т. Е. Для нескольких записей данного типа или для нескольких типов записей), вам необходимо применять блокировки в том же порядке, где бы вы ни выполняли блокировку , В противном случае вы можете иметь мертвую блокировку, когда один бит кода заблокирован для записи A и хочет заблокировать запись B, а другой бит кода заблокирован для B и ожидает запись A.
Относительно того, как вы убедитесь, что блокировки не открываются неожиданно. Убедитесь, что если у вас есть какой-нибудь длительный процесс, который может работать дольше, чем время ожидания блокировки, он обновляет свою блокировку во время выполнения.
Термин «явная блокировка» также используется для описания этого времени блокировки.