I know there's a boat load of examples of this out there, but I've confused the hell out of myself.
I have 4 timers that I run on a form from a button click. They can also get started from Form_Load if certain conditions are met. Posting just one Timer block because only the variable names and label that I display the time in change in the other 3.
Code:'Private Sub SoldiersTimer_Tick(sender As Object, e As EventArgs) Handles SoldiersTimer.Tick ' soldierstime = soldierstime - 1 ' soldierts = TimeSpan.FromSeconds(soldierstime) ' SoldiersTimeLabel.Text = String.Format("{0:00}:{1:00}:{2:00}", soldierts.Hours, soldierts.Minutes, soldierts.Seconds) ' If SoldiersTimeLabel.Text = "00:00:00" Then ' SoldiersTimer.Stop() ' call update procedure to do some things for all accounts ' End If 'End SubMy Form_LoadCode:'Declarations Dim bfdateloggedoff as Date Dim difference, soldierts, guardsments, specialforcests, thievests as TimeSpan Dim soldierstime, guardsmentime, specialforcestime, thievestime As Integer
Code:'get the date and time the user last logged out from the db bfdateloggedoff = dsaccounts.Tables("Accounts").Rows(reccount).Item(11) '(default value in db until I get things rolling 1/1/2013 12:00:01 AM) 'calculate the time difference between Now() and the time the user logged out difference = bfdateloggedoff.Subtract(Now()) 'timer time in seconds to countdown = number of units * 60 seconds * total minutes it will take for 1 unit 'we need to know the beginning number the user started with before they logged out soldierstime = dsmilitary.Tables("Military").Rows(reccount).Item(4) * 60 * 12 guardsmentime = dsmilitary.Tables("Military").Rows(reccount).Item(6) * 60 * 12 specialforcestime = dsmilitary.Tables("Military").Rows(reccount).Item(8) * 60 * 12 thievestime = dsmilitary.Tables("Military").Rows(reccount).Item(10) * 60 * 12
Here is where I am stuck. Trying to translate this from english to code:
I need to compare the value in my 4 variables (soldierstime, guardsmentime, specialforcestime, thievestime) to difference.TotalSeconds (the number of seconds elapsed since user logged off to Now())
I dont think this is correct because on the first If difference.TotalSeconds returns a negative number based on the two dates I set, so my variable will always be bigger. I believe the second If is correct.Code:'continue where we would have left off if we hadn't closed the program If variable_name > difference.TotalSeconds Then variable_name = variable_name - difference.TotalSeconds 'Start appropriate timer End If 'if time expired while we were logged out, change what we need to change If difference.TotalSeconds - variable_name <= 0 Then 'do database stuff End If
So maybe I need to just rewrite difference = bfdateloggedoff.Subtract(Now()) and swap the Now() with the date to fix this?


Reply With Quote
