Ma questi Windows Services non finiscono mai, tanto è brutto tempo, nevica, piove, nevica, piove, io sto un pò così ma lasciamo perdere altrimenti........non posso neanche andare a fare il giro in macchina, meglio che ne approfitti per "zappare" sul portatile ........ Vi ricordo che per punirvi Lorenzo ha ipotizzato un mio Windows Services, altrimenti a scelta una firma del byte di Igor, come premio per chi compila il modulo di feedback ai suoi webcast.....
USO
Per l'uso di un Windows Service siamo tutti concordi che basta andare da Pannello di Controllo > Strumenti d'Amministrazione > Servizi e seguendo le icone " : D" possiamo arrestare, riavviare etc uno sei servizi elencati. Ho trovato interessante visualizzare la finestra di dialogo Proprietà e verificare le Relazioni di dipendenza dei vari servizi, o la possibilità di specificare l'Account.
Altrimenti possiamo procedere via codice, mmmmmmmmmmh la serata inizia a prendere una piega interessante, e che usiamo?
La classe ServiceController che usiamo per:
-
i servizi che abbiamo disponibili
-
avviare e stoppare un servizio
-
mettere in pausa un servizio e riavviarlo
-
interrogare e ritrovar le proprietà di un servizio
-
specificare un custom command da eseguire
Ho visto l'elenco dei servizi che ho sul mio pc..........ooooooooooohhhhhhhhhhhhhh.......ma come mai ne ho così tante cose?!?!?!?!? In pratica, come già sapete tutti, creiamo il nostro bel progetto Windows Form, esplodiamo la Server Explorer, scegliamo il server, poi apriamo i servizi e scegliamo quello che ci serve aggiungendolo al Design. Altrimenti:
private System.ServiceProcess.ServiceController serviceController1;
this.serviceController1 = new System.ServiceProcess.ServiceController();
this.serviceController1.MachineName = "Rosalba";
this.serviceController1.ServiceName = "StatusN";
Vediamo come fare l'ultima cosa dell'elenco precedente ossia il custom command
//Creiamo prima un metodo che chiami la ServiceController.ExecuteCommand
void RunCommand()
{
if(System.DataTime.Now.Hour <=12)
//nota ExecuteCommand ha un valore numerico
//come parametro con range compreso tra 128 e 256
MioServizio.ExecuteCommand(200);
else
if(System.DataTime.Now.Hour <=24)
MioServizio.ExecuteCommand(220);
}
//....
//Ora effettuiamo l'overidde del metodo MCustomCommand
protected override void MCustomCommand(int command)
{
//creiamo o apriamo il file di testo MWService.txt
FileStream testo=new FileStream(@"C:\MWService.txt",FileMode.OpenOrCreate,FileAccess.Write);
StreamWriter testo2=new StreamWriter(testo);
//a seconda del valore del command scriviamo righe diverse nel nostro file di testo
if(command ==159)
{
testo2.Write("Ciao a tutti i bloggers di UgidotNet");
//....
}
else
{
if(command=200)
{
testo.Write("Ciao a tutti i bloggers delle altre community siamo tutti con la stessa passione");
//...
}
//......
CONFIGURARE E DEBUGGING
Un rapidissimo cenno a questi due argomenti. Per far prima, possiamo utilizzare il flie di configurazione messo a disposizione da .NET, bisogna averne uno per ogni servizio. Per specificare le proprietà che vanno configurate a "bisogno" si specificano nelle DynamicProperties.
Per il debugging come già avevamo accennato in questo POST non è possibile premere F5 ma dobbiamo lavorare un pò di più....
- facciamo lo start usando SCM
- scegliamo Process dal menù Debug
- dalla dialog box flag su Show System Processes
- selezioniamo il pocesso e click sul bottone attacca
- dalla dialog box Attach to Process flag su Common Language Runtime e click su ok
Ok basta sui Windows Service... la batteria ha ancora 24 minuti di autonomia che facciamo ?????? Inizio a preparare il post sul prossimo argomento e faccio qualche simulazione, di che parleremo ...........mmmmmmmmmmh fatemi pensare........a sì è vero......bello.....ma non basta la batteria, fammi cercare l'alimentatore.....lo scoprirete lunedì.
powered by IMHO 1.3