Ferestrele de serviciu cu propriile mâini, note ale unui vechi IT-shnik

Necesitatea de a rula aplicația scrisă în DELPHI ca ferestre de serviciu (serviciu) nu apare deseori. În principiu, ca serviciu, puteți rula orice aplicație consola, dar este mai bine dacă programul este inițial compilat pentru o astfel de lansare.







Am nevoie pentru a scrie un program care periodic nesupravegheat citit printr-o listă de fișiere XML, și în funcție de prezența acestor modificări - o bază de date plină masă mică. La început m-am gândit să-l rula ca o aplicație Windows normale, care ar temporizate a fiecare perioadă de timp, face propriile lor lucru și trece în modul standby, dar ar fi în acest caz, minimal, dar încă implicarea operatorului, care se apoi nu nafig necesare.

În Delphi există un șablon special de aplicație care a fost inițial destinat compilării ca serviciu Windows. Pentru a crea o astfel de aplicație, trebuie să selectați "Altele" din meniul "Nou" și în fereastra deschisă va exista o pictogramă "Service Application", de care avem nevoie. Avem un proiect gol care conține un modul cu o componentă a clasei TService, ceva de genul:

tip
TService1 = clasa (TService)
procedura ServiceAfterInstall (expeditor: TService);






procedura ServiceAfterUninstall (Expeditor: TService);
Procedură ServiceStart (Expeditor: TService; var Început: Boolean);
Procedură ServiceStop (Expeditor: TService; var Oprit: Boolean);
privat

public
funcția GetServiceController: TServiceController; suprascrie;

se încheie;

Două evenimente majore sunt gestionate de către serviciul - OnStart și OnStop care îndeplinesc are loc la momentul de pornire și oprire serviciul la comanda sistemului de operare pentru a ne scrie funcționalitate, cum ar fi pornirea și oprirea timer-ul (TTimer), citiți și de a salva setările și așa mai departe.

coloane: = TSTRingList.create;
Timer1.Enabled: = true;
a început: = adevărat;

TService cu o componentă în mediul vizual de dezvoltare DELPHI poate lucra la fel de bine ca și TDataModule componentă, adică, inscrie celelalte componente nonvisual, cum ar fi aceeași TTimer.

După compilarea programului, vom obține un Exe-shnik aproape normal, care poate fi integrat în lista de servicii Windows executându-l cu opțiunea / INSTALL.

Puteți defini funcțiile pentru evenimentele AfterInstall, unde puteți specifica acțiunile pe care le va efectua serviciul în timpul fazei de instalare, cum ar fi adăugarea de descrieri sau alte chei la registrul Windows.

Principalul lucru de reținut este că serviciul nu este absolut interactiv. Nu puteți afișa niciun avertisment pe ecran, nu afișați nici o formă de ecran și pentru mesajele de eroare puteți utiliza jurnale de sistem Windows sau fișiere de pe disc.

De asemenea, ar trebui să monitorizați utilizarea memoriei unei astfel de aplicații și să aveți o atenție deosebită în ceea ce privește tratarea excepțiilor.

Bună, Anton! A făcut tot ce ai descris. Din păcate, serviciul pornește și oprește imediat emiterea mesajului: Eroare 1053 - serviciul nu a răspuns în timp util. Pot vedea cum este scrisă cererea dvs.?







Articole similare

Trimiteți-le prietenilor: