Newsgroup: it.comp.www.asp
Titolo: Consiglio su come usare timer server-based

Salve a tutti....
sto facendo una agenda in 
asp.net
 e volevo che all'inserimento di un
nuovo appuntamento venisse creato un timer che a una certa data
spedisca un email di avviso.
Ho provato cosě e funziona :
Private Sub CreateTimer(sender As Object, e As System.EventArgs)   
   Dim invio As String
   invio = data.text & " " & ora.Text
   Dim datainvio = CDate(invio)
   Dim oggi As DateTime = Now
   Dim ts As TimeSpan = datainvio.Subtract(oggi)
   Dim Millisecs As Integer = ts.TotalMilliseconds
   Dim Timer1 As New System.Timers.Timer()
   Timer1.Interval = Millisecs
   Timer1.Enabled = True
   Timer1.AutoReset = False
   AddHandler Timer1.Elapsed, New
System.Timers.ElapsedEventHandler(AddressOf Me.Timer1_Elapsed)
End Sub
Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As
System.Timers.ElapsedEventArgs)
  Dim mail As New System.Web.Mail.MailMessage 
  mail.From = "
m...@vivadesign.net
" 
  mail.To = "
m...@vivadesign.net
" 
  mail.Subject = "Prova invio con timer" 
  mail.Body = "prova" 
  System.Web.Mail.SmtpMail.Send(mail)
End Sub
Perň vorrei controllare che l'appuntamento non sia stato cancellato
prima di inviare la mail.
Il  mio problema č che non so come fare a passare il valore dell'id
dell'appuntamento alla Sub  Timer1_Elapsed per fare i miei controlli e
personalizzazioni varie prima di spedire il messaggio.
Aiut! :)
Grazie
Riccardo

 Riccardo
La Sub Timer1... inseriscila all'interno di una classe con una variabile
pubblica dove inserirai il valore dell'id.
Quindi, nella sub CreateTimer crei questa classe, gli inserisci l'id
interessato e passi all'evento il nome della classe e la sub desiderata:
AddHandler Timer1.Elapsed, New
System.Timers.ElapsedEventHandler(AddressOf ClasseCreata.Timer1_Elapsed)
Ciao
--
AZ

AZ
Vediamo se ho capito bene.... 
Class classe1
  Public id As Integer
  Public Sub Timer1(ByVal id As Integer)
     'controllo id
     ' invio mail ecc
  End Sub
End Class
Sub CreateTimer()
   Dim avviso As classe1.Timer1 = New classe1.timer1(id)
   AddHandler Timer1.Elapsed, New System.Timers.ElapsedEventHandler AddressOf ClasseCreata.Timer1_Elapsed)
End Sub
č corretto?
Grazie 1000 x l'aiuto
Ciao
mr
--
Enjoy the .NET community! ASPItalia.com
 
http://forum.aspitalia.com/
 
http://www.aspitalia.com/

scusate se mi intrometto, tanto per imparare, vorrei capire come il
tutto può funzionare:
il codice indicato dove va inserito? in una webform?
in tal caso chiusa la webform o peggio terminata la sessione, come può
continuare a funzionare e spedire la mail alla scadenza impostata?
spero abbiate capito il mio dubbio: ho sempre pensato le pagine asp
come un processo dalla vita limitata (al solo caricamento della
pagina) e non come un processo server che gira in continuo.
--
Robynet

 mr
Penso di sě. Attento all'hanlder della funzione che venga chiamata con il
nome giusto di classe:
Sub CreateTimer()
   Dim avviso As classe1.Timer1 = New classe1.timer1(id)
   AddHandler Timer1.Elapsed, New System.Timers.ElapsedEventHandler
AddressOf Avviso.Timer1_Elapsed)
End Sub
Ciao
--
AZ


Puoi inserirla in una webform, o ancora meglio nel global.asax.
Normalmente io inserisco eventi "a tempo" all'interno del global.asax che
definisco come una classe.
Cerco di spiegarti più semplicemente: all'interno del global.asax inserisco
delle fuinzioni visibili dall'intera applicazione (da tutte le pagine
asp.net
), e nell'evento application_onstart inserisco l'evento Timer perché
alcune funzioni vengano eseguiti dopo un certo periodo o ad una certa ora.
Su aspitalia trovi un esempio sull'argomento.
Ciao
--
AZ

 pagina) e non come un processo server che gira in continuo.
il codice che ho scritto sopra cmq non è del tutto corretto...se ti
interessa quello funzionante magari te lo spedisco.
ciao
mr
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG