Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.04.04;
Скачать: CL | DM;

Вниз

Закрытие сервера   Найти похожие ветки 

 
Alex_C ©   (2006-12-04 15:48) [0]

При закрытии COM-сервера я сначала закрываю все приложения, которые с ним связаны. Это у меня реализовано в событии OnClose основной формы сервера.
Однако если при работающем приложении пользователь нажал на компе кнопку "выключить", приложение-сервер завершается, а вот те приложения, что с ним связаны начинают ругаться на отсутствие сервера и все виснет. Как этого избежать?


 
Array ©   (2006-12-04 16:00) [1]

зделать обработчик ошибок , это как минимум


 
umbra ©   (2006-12-04 16:21) [2]

надо, чтобы сервер не закрывался, пока не отключатся все клиенты


 
umbra ©   (2006-12-04 16:27) [3]


> Это у меня реализовано в событии OnClose основной формы
> сервера

для этого лучше подходит событие OnCloseQuery


 
Alex_C ©   (2006-12-04 16:51) [4]

То umbra: дык это понятно :) Еще бы вот реализовать это не криво. Есть вариант что-то типа такого:

OnClose:
    While FindWindow(nil, "MyProg") <> 0 do;

Типа ждем, пока есть окно с таким именем...
А на счет OnCloseQuery - так это ж просто запрос на возможность закрытия окно - не более чем, и от OnClose в данном случае ничем не отличается.

То Array - обработчик ошибок? А его реализация? В .dpr файле
try
 Application.Run;
except
end;
- криво это. А как тогда иначе?


 
clickmaker ©   (2006-12-04 16:54) [5]


> [4] Alex_C ©   (04.12.06 16:51)

а TComServer.ObjectCount не поможет?


 
Alex_C ©   (2006-12-05 09:23) [6]


> а TComServer.ObjectCount не поможет?


А каким образом? Как я понял, он лишь показывает кол-во подключенных к серверу приложений. А я их и так знаю. А вот как их закрыть до закрытия сервера?


 
clickmaker ©   (2006-12-05 09:40) [7]


> как их закрыть до закрытия сервера?

вообще-то в этом случае неплохо бы предупредить клиента. Что, дескать, на сервере начинаются профилактические работы и ежели он в течение N минут не сохранит данные и не закроется, то... Ну в общем, кто не спрятался...
Можно это через посылку сообщения клиентам сделать. А в обработчике включить таймер и по истечении просто MainForm.Close


 
tesseract ©   (2006-12-05 11:05) [8]


> Однако если при работающем приложении пользователь нажал
> на компе кнопку "выключить", приложение-сервер завершается,
>  а вот те приложения, что с ним связаны начинают ругаться
> на отсутствие сервера и все виснет. Как этого избежать?


Обрабатывать WM_QUERYENDSESSION  в сервере и приложениях. Вести try..except для обращений к серверу, он может вырубиться и по другим причинам.

Можно ввести сообщение/CallBack функцию для предупреждения клиента о том что сервак вырубился.



Страницы: 1 вся ветка

Текущий архив: 2010.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
1-1248087362
Amid
2009-07-20 14:56
2010.04.04
Помогите перевести код из Си в Делфи


2-1264944770
Interesting
2010-01-31 16:32
2010.04.04
Количество секунд составляющий временной интервал


15-1262867892
El
2010-01-07 15:38
2010.04.04
С Рождеством


15-1263251045
Smile
2010-01-12 02:04
2010.04.04
Германн или где?


3-1237814635
JanMihail
2009-03-23 16:23
2010.04.04
TFieldType