Как обнаружить запись заблокирована слишком долго?

Еще одно решение для определения, когда диспетчер задач закрывает программу, - это проверка того, имеет ли основная форма или какой-либо ее элемент управления фокус. Когда вы закрываетесь с помощью диспетчера задач, приложение не фокусируется, тогда как при закрытии с помощью кнопки закрытия или Alt + F4 приложение имеет фокус. Я использовал простую проверку:

private void MyForm_Closing(object sender, FormClosingEventArgs e)
{
    if (this.ContainsFocus)
    {
        // Put user close code here
    }
}
1
задан tienph 13 July 2018 в 08:37
поделиться

2 ответа

Все, что на стороне клиента плохо, поскольку оно может сбой и не будет работать, если вы уменьшите масштаб. Замените status 1/0 на locked_until_ts. Необязательно добавьте locked_by, чтобы B мог разговаривать с A. Невозможно захватить блокировку от кого-то другого (но ОК, чтобы схватить его от себя), до тех пор, пока блокировка не истекла. Вы можете добавить столбец версии для оптимистической блокировки одновременно.

0
ответ дан ewramner 17 August 2018 в 13:20
поделиться

Вам нужно сохранить временную метку каждого действия пользователя в своей базе данных для этой цели вместо статуса. Всякий раз, когда кто-то загружает пользователя, может быть собрана информация о том, доступен ли пользователь кликабельному или нет. В основном вы загружаете метку времени по пользовательской информации и видите, было ли это за последние 60 секунд. Если это так, тогда вам даже не нужно отправлять запрос на сервер, если пользователь пытается щелкнуть другого пользователя. Если время истекло, вам нужно будет запросить отметку времени с сервера и посмотреть, доступен ли пользователь, или другое действие было выполнено им с момента последней проверки. Кроме того, если пользователь был загружен как интерактивный, когда другой пользователь нажимает на пользователя, вам нужно будет проверить эту метку времени, чтобы убедиться, что другой пользователь ничего не сделал за последние 60 секунд.

0
ответ дан Lajos Arpad 17 August 2018 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: