Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как можно использовать наследование TService [D7, XP]


msgipss ©   (2005-12-02 13:18:00) 

сорри за ламерский вопрос..
пишу класс наследую его от TService, добавил туда некоторую функциональность.
Теперь хочу создать службу, file - new - other - service application
появляется форма.
type
 TService1 = class(TService)
и т.д.
изменяю TService на TMyService
определяю события onStop, onStart, onExecute с соответствующими inherited
все компилируется, все работает как надо.
Сохраняю проект, выхожу. Открываю заново, тут мне ide говорит, что методов, событий таких не существует и превращает в обычную форму от tform.
Подскажите пожалуйста, как решить мне данную задачу более правильно.
Заранее благодарен


msgipss   (2005-12-05 07:32:00) [1]

хорошо большое спасибо за объяснение, тогда еще один вопрос, но в другом топике 8) ..


Набережных С.   (2005-12-05 07:28:00) [2]


> msgipss   (05.12.05 06:47) [4]


> Вопрос, в каком потоке будет выполняться процедура обработки
> события, и метод класса1, надо полагать что в потоке класса2?

Да, конечно. Дельфийский класс - всего лишь надстройка над системным объектом. Поток, нить - просто последовательность команд, каждая со своим корнем, ничего более. В первом приближении это можно описать так:

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

Соответственно, все функции, вызываемые кодом потока, будут выполняться в то время, когда именно этот поток "имеет доступ к процессору", когда выполняется последовательность команд из этой нити, т.е., как принято говорить, в контексте вызывающего потока.

PS Лучше все-таки для отдельных вопросов заводить отдельный топик. Так будет удобнее для других участников форума.


msgipss   (2005-12-05 06:47:00) [3]

Digitman ©   (02.12.05 15:03) [2]
да

Набережных С. ©   (02.12.05 16:56) [3]
спасибо, все получилось

Можно еще один вопрос, хотя уже не в тему немного
Реализован класс1 от треда, и класс2 тоже от треда.
класс2 реализует инициирование события при времени изменении файлов, пути к которым были переданы классу2
класс1 создает экземпляр класса2 и обработывает его события, обработка заключается в вызове метода класса1 из процедуры обработки события.

Вопрос, в каком потоке будет выполняться процедура обработки события, и метод класса1, надо полагать что в потоке класса2?

Также, как и если из класса1 вызвать метод класса2, этот метод будет выполняться в потоке1, в смысле поток 1 не будет дальше выполнять свою работу пока не выполнится этот метод ?


Набережных С.   (2005-12-02 16:56:00) [4]


> пишу класс наследую его от TService

Сначала добавь свой класс-наследник в репозитарий, и потом,  в проекте сервиса, добавляй новый класс из репозитария.

PS Репозитарий - это который по File/New/Other. А то уже были преценденты:)


Digitman   (2005-12-02 15:03:00) [5]

что за проект ?

он основан на File -> New .. ->  Service Application ?


msgipss   (2005-12-02 14:33:00) [6]

или я не понятно / не корректно объяснил проблему ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо