Come posso schedulare un servizio ad un orario prestabilito?

mercoledì 02 aprile 2008 - 14.33

AnnaR6 Profilo | Newbie

Ciao a tutti, avrei bisogno del vostro aiuto perchè stò scrivendo un servizio per Windows in Visual .NET che deve inviare un'email tutti i giorni (tranne sabato e domenica) ad un orario prestabilito.

Il servizio c'è e funziona utilizzando la proprietà "Interval" del Timer. Solo che così mi invia questa email ad intervalli di tempo!!

Io invece avrei bisogno che l'email mi fosse inviata tutti i giorni alle 20.00 di sera, ad esempio, indipendentemente da quando ho installato e fatto partire il servizio dal cliente.

Qualcuno ha qualche dritta? Qualche pezzo di codice di esempio??

Grazie, Anna

amelix Profilo | Expert

Non puoi fare una specie di "polling"?
fai un ciclo che ogni minuto chiede che ore sono... (la precisione la decidi tu con il timer) e appena arriva il tuo orario fa le operazioni necessarie.

Altrimenti ti abboni al servizio di windows x le operazioni temporizzate.
Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/

Anonimo Profilo | Senior Member

Ciao ,
allora nel pannello di controllo hai l'opzione Scheduled Task dove, una volta selezionato il programma, imposti te a che ora far partire l'applicazione.

Ciao
ALESSANDRA

amelix Profilo | Expert

Esatto! Proprio lui!

Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/

AnnaR6 Profilo | Newbie

Ringrazio tutti che mi avete risposto!

Nel frattempo ho trovato il sistema per realizzare quello che volevo, il tutto via codice.
Ecco il codice che ho utilizzato con qualche commento:

Funzione di risincronizzazione:

Public Function Resink(ByVal Tm As DateTime, ByVal delta As Long) As Long
Dim time As New DateTime(Date.Now.Year, Date.Now.Month, Date.Now.Day, Tm.Hour, Tm.Minute, 0)
Dim num As Long = CLng(Math.Round(time.Subtract(Date.Now).TotalSeconds))
Do While (num < 0)
num = (num + delta)
Loop
Return (num * &H3E8)
End Function


Il valori che vuole sono:

Tm = orario in cui deve girare il servizio (ad esempio "20.00")
delta = lo step del timer in millisecondi (ad esempio "86400")



Spero che possa essere utile anche a qualcun altro!!

Lampss

amelix Profilo | Expert

Dimmi una cosa... Il processore che dice?
È sempre al 100% immagino.
>scusa ho letto in modo superficiale il codice... adesso ho capito cosa fa.

Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5