Contatore a parire da..

martedì 07 agosto 2012 - 16.39
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows XP  |  Visual Studio 2010  |  MySQL 5.5

andreadp Profilo | Junior Member

Salve a tutti...Dovrei una volta intercettanto un evento, con un worker background, far partire un contatore dalla datime del momento. L'intervallo poi che ne viene fuori è da sommare ad altri dataTime. Vorrei inoltre che riesca ad intercettare il momento in cui si arrivi con il conteggio per esempio alle due ore..

Suggerimenti???

grazie mille
Andrea

Geronimo79 Profilo | Junior Member

Ciao questo è un classico esempio di un cronometro....lo puoi adattare alle tue esigenze:

Public Class Form1 Dim Inizio As Date = Now Dim TempoTrascorso As TimeSpan Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Inizio = Now Timer1.Interval = 100 Timer1.Enabled = True End Sub Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick TempoTrascorso = Now - Inizio Me.Ore.Text = TempoTrascorso.Hours.ToString.PadLeft(2, "0"c) Me.Min.Text = TempoTrascorso.Minutes.ToString.PadLeft(2, "0"c) Me.Sec.Text = TempoTrascorso.Seconds.ToString.PadLeft(2, "0"c) Me.Mil.Text = TempoTrascorso.Milliseconds.ToString.PadLeft(3, "0"c) End Sub End Class

Un saluto.
Facci sapere.

andreadp Profilo | Junior Member

Ok funziona. Adesso i caratteri che prendo dalle label (che rappresentano il cronometro) dovrei "trasfrormarle" in formato mysql per andare poi a fare l'update in una tabella. Il metodo più veloce?
Andrea

Geronimo79 Profilo | Junior Member

Ad un certo punto dovresti stoppare il timer e ottenere il tempo, potresti fare così:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Adesso dovresti sommare questo valore di tempo ad un altro giusto? Quale sarebbe l'altro valore? Lo ricavi da una select? Come?
Magari posta un pò di codice così inquadriamo bene il problema.
Facci sapere.
Un saluto.

andreadp Profilo | Junior Member

Perfetto. Si dovrei stoppare il tempo se si "sistema" l'evento esterno e sommare il tempo trascorso ad un dateTime.
Inoltre dovrei fare in modo che allo scadere, per esempio, dell' ora il timer si blocchi da solo.
Andrea

Geronimo79 Profilo | Junior Member

Per sommare due orari devi usare il Timespan ci sono tanti esempi in rete...questo è uno dai un occhiata

http://msdn.microsoft.com/it-it/library/system.timespan.add.aspx

Ok adesso puoi usare questo codice di un countdown che una volta arrivato a 0 stoppa il timer e ti mostra un messaggio...tu ovviamente al posto del messaggio inserisci la tua routine:

Private alarmTime As Date Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.alarmTime = Date.Now.AddMinutes(45) Me.Timer2.Start() End Sub Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick If alarmTime < Date.Now Then Me.Timer2.Stop() MessageBox.Show("Tempo scaduto") Else Dim remainingTime As TimeSpan = Me.alarmTime.Subtract(Date.Now) Me.Label1.Text = String.Format("{0}:{1:d2}:{2:d2}", _ remainingTime.Hours, _ remainingTime.Minutes, _ remainingTime.Seconds) End If End Sub

Facci sapere.
Un saluto.

andreadp Profilo | Junior Member

Allora ho adottato il conteggio da voi suggerito per il countdown. Impostando l'alertTime DateTime.Now.AddMinutes(45), il conteggio mi parte da 42..Come mai dove sbaglio?
Andrea

Geronimo79 Profilo | Junior Member

Non sò che dirti...io l'ho appena provato e funziona al 100%....hai provato a inserire il codice su un progetto nuovo giusto per prova?
Altrimenti posta il tuo codice...
Facci sapere.
Un saluto.

andreadp Profilo | Junior Member

Ok adesso parte e funziona....

Alla scadenza del tempo devo sommare quel tempo a dei dateTime in tabelle MySql..:-)
Andrea

Geronimo79 Profilo | Junior Member

Per sommare gli orari devi usare il Timespan....puoi dare un'occhiata quì....

http://msdn.microsoft.com/it-it/library/system.timespan.add.aspx

Facci sapere.
Un saluto.

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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5