public void RemoveBlock(T obj)
        {
            var wasLock = IsBlocked;

            if (lockObjects.Contains(obj))
            {
                lockObjects.Remove(obj);
            }

            LockObjectRemoved?.Invoke(obj);

            if (wasLock && !IsBlocked)
            {
                StopLock?.Invoke();
            }
        }
 private void OnLockObjectRemoved(T obj)
 {
     logger?.Write($"{logName}. Remove block {obj}. Remain blocks: {GetBlockedObjectNames()}", logLevel);
     LockObjectRemoved?.Invoke(obj);
 }