Bonjour,
j'aime bien aller au fond des choses, car la seule manière d'apprendre et de capitaliser.
Aussi, j'ai fait le test suivant :
et dans le OnCreate de l'application ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 function ServiceGetStatus(sMachine, sService: PChar): DWORD; var SCManHandle, SvcHandle: SC_Handle; SS: TServiceStatus; dwStat: DWORD; begin dwStat := 0; // Open service manager handle. SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT); if (SCManHandle > 0) then begin SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS); // if Service installed if (SvcHandle > 0) then begin // SS structure holds the service status (TServiceStatus); if (QueryServiceStatus(SvcHandle, SS)) then dwStat := ss.dwCurrentState; CloseServiceHandle(SvcHandle); end; CloseServiceHandle(SCManHandle); end; Result := dwStat; end; function ServiceRunning(sMachine, sService: PChar): Boolean; begin Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService); end;
micro arrêté, puisque c'est dans cette situation, que j'avais un message d'erreur (enable to establish a connection with localhost..)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 if ServiceRunning(nil, 'FirebirdGuardianDefaultInstance') then ShowMessage('Firebird Service Running') else ShowMessage('Firebird Service not Running'); JeuConnection.Database := 'localhost:' + UserAlias; JeuConnection.Path := UserAlias; if JeuConnection.Connected then begin // ouverture des tables end;
au boot, j'ai toujours le message "service Running"
ce qui montre bien que le service FireBird démarre avant l'ouverture du programme.
ceci étant dit, j'ai besoin de ton expérience sur les services dans un autre projet différent de celui-ci :
Ma question est la suivante :
Est-il judicieux de mettre en place un service qui exécuterait à une date et une heure précise une opération de Backup Restore (avec un Thread)
sur une base de données FireBird placée sur un serveur sachant que cette manipulation durerait environ une trentaine de secondes environ ou
est-ce que cette pratique doit-être systématiquement effectuée manuellement ?
merci par avance de ton avis
Partager