| Arturo Pisapia |
Windows Service Q
Stavo facendo un po' di prove relative ad un Windows Service che funga schedulatore, quindi deve contenere (all' OnStart) un ciclo while(true)....
....il servizio funziona...unico problema e' che mi pianta la CPU (al 99%). Evidentemente c'e' qualcosa che non ho capito riguardo ai Windows Service! |
| Raffaele Rialdi |
Re: Windows Service Q
> Stavo facendo un po' di prove relative ad un Windows Service che funga
> schedulatore, quindi deve contenere (all' OnStart) un ciclo while(true).... > > ....il servizio funziona...unico problema e' che mi pianta la CPU (al 99%). > Evidentemente c'e' qualcosa che non ho capito riguardo ai Windows Service! Quello che hai sperimentato vale per tutte le applicazioni, non solo per i window service. Le applicazioni non devono tenere il controllo in modo indefinito (come il loop che hai fatto) altrimenti Windows gli lascia un altissimo tempo CPU che va al 100%. Se vuoi fare uno schedulatore dovrai usare ad esempio un timer. Combinazione l'esempio della mia sessione su remoting è proprio un window service che fa da schedulatore. Remoting lo suo per parlare tra una winform e il service in modo da schedulare ed essere avvisato quando scade uno dei timer. L'esempio completo lo trovi qui: http://www.ugidotnet.org/workshops/workshops_detail.aspx?ID=5b2c8d78-3654-48c1-a4a3-df0143018069 Un consiglio. Così come ho fatto in quell'esempio, è meglio sviluppare tutta la logica dentro un assembly separato (una dll) in modo da poterla testare dentro una console application. Quando tutto ti funziona da Console, scrivi il servizio windows usando quello stesso assembly. Questo è il motivo per cui nell'esempio trovi così tanti progetti: - Common per le parti condivise tra servizio e client - FrontEnd è il client - ServerTest è la console per testare la logica del server - UgiLogic è la logica che usa il timer per schedulare dei job - UgiScheduler è il windows service che usa UgiLogic - SchedulerSetup è il progetto di setup per installare il service Raffaele |
| Arturo Pisapia |
Re: Windows Service Q
Mi hai chiarito definitivamente il problema.
Grazie tante! |