Control Start Of Program

4

Ho creato un programma, che doveva funzionare ogni notte come operazione programmata per Windows, diciamo che il programma è solo un metodo, chiamato Do_Task (). Di solito è necessario premere un pulsante per eseguire il metodo Do_Task (), ma per poterlo eseguire come operazione pianificata, ho dovuto chiamare il metodo Do_Task () nell'evento di caricamento del modulo. (Non si può dire a Windows Scheduler di premere un pulsante).

Ma ecco il problema: quando lo installo dall'utente finale, voglio avere l'opzione automatica (Do_Task () viene chiamato dall'evento di caricamento da), o Manuel (Do_Task () viene eseguito solo da un pulsante). Per testare e modificare le impostazioni nel file di configurazione.

Ho provato a implementarlo tramite una casella di controllo e una proprietà dell'applicazione, per specificare come deve essere eseguito il programma alla successiva esecuzione. Nell'evento di caricamento del modulo, ho eseguito un controllo IF statement, se esegui auto è true, quindi imposta la proprietà dell'applicazione run auto come true ed esegui Do_Task (), ecc. Ecc.

Ma non ha funzionato, mi ha praticamente ignorato e ho sempre eseguito l'auto. Cosa mi manca? Sospetto (da altri problemi che ho riscontrato con questo problema) che l'evento di caricamento del modulo è troppo tardi per questo tipo di cose, quindi qual è il primo posto in cui puoi impartire comandi al tuo programma.

    
posta user3150255 17.07.2015 - 01:19
fonte

1 risposta

8

Dividi la logica del tuo compito e visualizza la logica

Sembra che il tuo programma abbia la logica del compito mescolata all'interno della stessa classe che gestisce la visualizzazione di una finestra di dialogo.

Un'idea migliore sarebbe quella di suddividere questa funzionalità in classi separate, ognuna delle quali gestisce la una responsabilità . Come minimo, dovresti averne uno che gestisca la visualizzazione della finestra di dialogo e uno per l'esecuzione dell'attività (ad esempio, il metodo Do_Task (), che dovrebbe anche essere rinominato in qualcosa di più specifico sull'attività effettiva eseguita).

Dopo aver diviso le cose, puoi fare più facilmente ciò che il Deduplicator suggerisce nei commenti: fornire un'opzione a riga di comando per quando è necessario eseguire l'attività senza sorveglianza. Sarà semplice come creare la classe di visualizzazione e passare la classe di attività ad essa per la modalità interattiva e semplicemente creando la classe di attività ed eseguendo Do_Task per la modalità automatica.

    
risposta data 17.07.2015 - 01:48
fonte

Leggi altre domande sui tag