2014-09-22 2 views
0

Я разрабатываю winform для настольных компьютеров в C#. Приложение может неожиданно закрыться (отключить питание или отключить режим отладки). В любом закрытом состоянии мне нужно обновить мою базу данных. i.e. Мне нужно изменить статус онлайн от 1 до 0 , как это сделать?Обновление базы данных, если приложение неожиданно закрывается в C# winforms

+2

Вы действительно думаете об этом? Если питание выходит из строя, ваш компьютер выключен, так как ваше приложение будет волшебным образом сохранять данные в базе данных? – jmcilhinney

+2

Вам понадобится база данных извне и еще одна программа, чтобы «спросить», жив ли рабочий стол winform. – Pavenhimself

+0

Очевидно, что сбойное приложение не сможет выполнить обновление базы данных. Опция, которая может быть опробована, - это периодически использовать механизм в приложении (скажем каждые 5 минут), обновляя текущее время в таблице базы данных. Любой, кто проверяет статус онлайн, также должен проверить последний раз, когда приложение обновило это поле времени. Если последнее обновленное значение времени больше значения (скажем, 6-10 минут), мы можем предположить, что приложение отключено/отключено. –

ответ

0

Лучший способ узнать, умерло ли приложение, - не пытаться придумать способ обновления базы данных при закрытии приложения; а скорее, вы можете создать запись «сессии» всякий раз, когда приложение открывается; затем «ping» запись (т. е. есть столбец LastPingUTC) каждую минуту.

Если приложение закрывается по какой-либо причине, значение LastPingUTC будет превышать 1 минуту назад, и поэтому вы можете предположить, что приложение/сессия мертвы.

На самом деле, я предполагаю, что данная сессия мертва через 5 минут, поскольку обновление столбца может быть отложено.

Смежные вопросы