2009-09-03 13 views

risposta

36

Soluzione molto migliore, lascia che Windows lo faccia per te usando Scheduled Tasks.

Se è necessario eseguirlo solo una volta al giorno, allora opterei per questo. Anche Google lo fa;)

EDIT:

Per rispondere il commento, è come Fredrik ha detto. Si tratta di un'opzione avanzata, che è possibile aprire quando viene impostata l'attività, contenente una casella di controllo denominata "Run only if logged on", che è falsa all'inizio.

+0

Lo raccomando! Per la mia azienda, attualmente è la soluzione migliore. – Zanoni

+3

Questa è sicuramente la strada da percorrere; quindi la tua app non utilizzerà alcuna memoria mentre è in attesa di funzionare solo domani. –

+0

Modificare il servizio C# in un'applicazione Windows senza moduli. – Zanoni

4

Scrivere un'app console o equivalente e utilizzare l'Utilità di pianificazione di Windows (o come si chiama al giorno d'oggi ...) per eseguirlo quotidianamente.

1

Perché non impostare questa funzione per eseguire come un'operazione pianificata. Farlo eseguire e quindi uscire. Impostare Windows per avviare il processo come operazione pianificata alle 3:00 di ogni giorno.

3

Per una soluzione flessibile, è possibile utilizzare this. Non è un servizio di Windows, ma potresti facilmente inserirlo in uno. Oppure si potrebbe considerare Quartz.NET che è reputato essere la forza industriale (la versione Java è certamente).

+0

+1 per il riferimento Quartz.NET - questa sarebbe la scelta giusta e in effetti robusta per soddisfare le esigenze di programmazione all'interno di una soluzione personalizzata (e dovrebbe essere le mani preferite sul cron personalizzato limitato che hai menzionato, utilizzando Quartz è straordinariamente facile), anche se per il compito a portata di mano solo utilizzando l'Utilità di pianificazione come per la risposta accettata è sicuramente la strada da percorrere. –

2

Altre risposte sono buone. Ho solo pensato che avrei sottolineare che

confrontare la DateTime.Now con 3:00

è una cattiva soluzione, anche se si dorme per un po 'di tempo tra ogni controllo, come spreca inutilmente risorse di sistema (non solo nel controllare ripetutamente l'ora, ma anche nell'uso della memoria del programma).

3

Ho usato Operazioni pianificate con successo per i backup, ma ho una parola di cautela ...

attività pianificate non vengono eseguiti se si effettua il logout. Non sono sicuro se questo può essere eliminato, ma sono stato colto da attività non eseguite perché Windows si aggiorna automaticamente, si riavvia e si siede in attesa del log-in.

Ho disabilitato gli aggiornamenti automatici - Windows dovrebbe CHIEDERE prima.

Un'altra considerazione è che il 3AM è un orario in cui molti utenti vengono normalmente disconnessi.

+0

Questo è quello che sto pensando ... Ho provato l'operazione programmata e dopo che il server si è riavviato, non si avvia niente ... Grazie! – Bigballs

+0

Devo dire che non ho mai avuto il problema da solo. Ha sempre funzionato al 100% per me. –

2

Se si aspetta un file ogni notte, invece di preoccuparsi di quando arriva, basta far sparire un evento quando lo fa.

un'occhiata a:

System.IO.FileSystemWatcher

File System Watcher on MSDN

+0

+1 Bella lezione, grazie :) –

Problemi correlati