Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2010.04.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Corba";
Текущий архив: 2010.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
15-1262156476
прохожий
2009-12-30 10:01
2010.04.04
домен продлить


2-1264921818
cyber-pilot
2010-01-31 10:10
2010.04.04
Указатель на массив


1-1246608128
smirnoff
2009-07-03 12:02
2010.04.04
Обращение из Delphi к DLL написанной на C++


15-1263549968
TMan
2010-01-15 13:06
2010.04.04
Пароли под звездочками


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский