Главная страница
    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.47 MB
Время: 0.004 c
15-1263211082
trxnet
2010-01-11 14:58
2010.04.04
Кодирование буфера


15-1263485382
toto
2010-01-14 19:09
2010.04.04
логин Windows


15-1263382053
itsme
2010-01-13 14:27
2010.04.04
Получение текста из дочернего элемента(ListBox).


1-1247389218
dmitry_12_08_73
2009-07-12 13:00
2010.04.04
Прокрутка и копирование содержимого веб-страницы


2-1264951167
Грелка 21 века
2010-01-31 18:19
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский