Topic: бездействие программы

Моя программа выложена на сервер с общим доступом. Программой пользуются одновременно несколько человек, в связи с этим наблюдается постоянное подтормаживание. Кроме того многие пользователи забывают после использования программы закрывать ее. Вижу решением  по увеличению быстродействия может быть  автоматическое закрывание при бездействии в течение установленного времени. Пробовал  сделать таймером, но в этом случае появляется риск отключения во время заполнения или ввода данных. Можете помочь примером по отключению при бездействии?

2 (edited by sibprogsistem 2021-03-26 17:15:24)

Re: бездействие программы

а зачем программу выкладываете на сервер? оставьте там БД а сами программы пускай копируют себе на компы

Re: бездействие программы

тут по сути проблема не с программой, а с базой. Файл базы блокируется и-за какого-то подвисшего компа , и другие не могут уже к базе обращаться. Появляется сообщение  'base is locked' .

4 (edited by Andrei 2021-03-29 12:49:48)

Re: бездействие программы

konstruktor wrote:

тут по сути проблема не с программой, а с базой. Файл базы блокируется и-за какого-то подвисшего компа , и другие не могут уже к базе обращаться. Появляется сообщение  'base is locked' .

База находится в папке с exe-шником и создана в формате SQLite?
Если да, то насколько я понимаю, ваш проект для однопользовательского режима.

Re: бездействие программы

konstruktor wrote:

тут по сути проблема не с программой, а с базой. Файл базы блокируется и-за какого-то подвисшего компа , и другие не могут уже к базе обращаться. Появляется сообщение  'base is locked' .

на сколько я понял все эту кухню, то зависание ПК юзера не может влиять на работу БД на сервере
Dll БД на сервере получает запрос и выполняет его не зависимо от ПК Юзера  - может у Вас сервер зависает?

6 (edited by Andrei 2021-03-29 12:50:10)

Re: бездействие программы

Andrei wrote:

База находится в папке с exe-шником и создана в формате SQLite?
Если да, то насколько я понимаю, ваш проект для однопользовательского режима.

Habr о SQLite
А как с архитектурой? Сервера-то нету?
Сервера нету, само приложение является сервером. Доступ к БД происходит через «подключения» к БД (нечто вроде хэндла файла ОС), которые мы открываем через вызов соот-й функции DLL. При открытии указывается имя файла БД. Если такого нету — он автоматически создается.
Допустимо открывать множество подключений к одной и тоже БД (через имя файла) в одном или разных приложениях.
Система использует механизмы блокировки доступа к файлу на уровне ОС, чтобы это все работало
(эти механизмы обычно плохо работают на сетевых дисках, так что не рекомендуется использовать SQlite с файлом на сети).
Изначально SQlite работал по принципу «многие читают — один пишет».
То есть только одно соединение пишет в БД в данный момент времени. Если другие соединения попробуют тоже записать, то словят ошибку SQLITE_BUSY.
Можно, однако, ввести таймаут операций. Тогда подключение, столкнувшись с занятостью БД, будет ждать N секунду прежде, чем отвалиться с ошибкой SQLITE_BUSY.

Re: бездействие программы

konstruktor wrote:

тут по сути проблема не с программой, а с базой. Файл базы блокируется и-за какого-то подвисшего компа , и другие не могут уже к базе обращаться. Появляется сообщение  'base is locked' .

Переходите на MySQL

Визуальное программирование: блог и телеграм-канал.

Re: бездействие программы

У меня была похожая проблема пару лет назад. Решилась двумя способами:
1) как было сказано выше, на "сервер" выложите только базу....я еще привязывал папки с файлами, чтобы облегчить базу
2) поставьте на сервер SSD... проблема с "зависанием из-за диска будет и у MySQL.. увы-увы, но это необходимы аппгрейд

Re: бездействие программы

спасибо за рекомендации