Originariamente inviato da jlocke2010
codice:
non hai un orario preciso (se lo vuoi alle 23:00 ad esempio, rischi che se il programma è stato avviato alle 10:59, il timer scatterà solo alle 23:59)
Ciao,
questo non si verifica in quanto viene verificata solo l'ora. Quindi anche le 23:59 danno un esito positivo sull'if.

E' vero sia lo spreco di risorse (ma qui bisogna vedere la tipologia di software) e sia il login. D'altra parte bisogna considerare anche la tipologia di utenza, se devi fornire un prodotto indipendente non è pensabile far utilizzare le operazioni pianificate. Come dire, bisogna sempre fare le opportune valutazioni
ciao, chiaramente bisogna capire cosa intendi per prodotto indipendente... indipendente dalla piattaforma? indipendente dalla configurazione manuale delle operazioni pianificate? indipendente dalle operazioni pianificate stesse?
per la prima : bisogna valutare la piattaforma (in caso di servizio di avvio)...
per la seconda : non sei legato alla configurazione manuale, esistono appositi oggetti per farlo da codice.
per la terza : come detto prima, dipende dalla piattaforma, se si tratta di windows e vuoi fare una cosa indipendente dalle operazioni pianificate e professionale, allora si deve creare un servizio di windows.

in ogni caso, ho paura che fare un sistema che ci si aspetti che lavori alle 23:00 e invece lavora alle 23:59, non è molto professionale, credo sia molto meglio scrivere qualche riga di codice in più per fornire un prodotto serio...

mi spiego meglio su quest'ultimo punto :

se sono le 10:59 e io avvio il programma (con il timer come dici tu ogni ora), il timer farà la sua prima chiamata alle 11:59, a questo punto, la variabile di confronto dell'orario corrisponderà alle 11 (DateTime.Now.Hour.ToString()) anche se sono praticamente le 12... quindi se io imposto l'orario alle 23:00, l'ultima chiamata del timer sarà alle 22:59 (quindi DateTime.Now.Hour.ToString() == 22) e la condizione sarà ancora a false... dovrò attendere la successiva chiamata (alle 23:59) per avere la condizione vera (DateTime.Now.Hour.ToString() == 23), traslando di fatto praticamente di un'ora (o poco meno) il lavoro che invece mi apettavo per le 23, e questo non è per nulla professionale.

poi è solo un consiglio... ognuno è libero di fare come crede.