Timer based clocks losing seconds. VB Community 2015
<p>My question deals with Timer activated clocks. Upon research the most similar situation is found here:</p>

<p><a href="https://stackoverflow.com/questions/20298520/two-timers-with-two-different-intervals-c-sharp-form">Two timers with two different intervals C# Form</a></p>

<p>Situation: I have an application being used for a game. In this game, there are many instances where a user must be able to create clocks and timers that need to be accurate within a second and if clocks, follow UTC Time.</p>

<p>Due to the need for variables to be used across forms, they are declared in a module.</p>

<pre><code>Module Global_Variables


    ' String Variables
    ' frmMain
    Public strMDbPath As String

    ' Date &amp; Time Variables
    'frmMain
    Public dtLocalTime As DateTime
    Public dtEveTime As DateTime

End Module
</code></pre>

<p>"frmMain" the main form, uses two clocks. Clock 1 is local time and clock 2 is UTC time.</p>

<pre><code>Public Class frmMain

Private Sub Page_Load(sender As Object, e As EventArgs)

    'Start Eve and Local Time Clocks
    tmrMainTimes.Interval = 1000
    tmrMainTimes.Start()

End Sub

Private Sub mnuSecuredItemEnableAccess_Click(sender As Object, e As EventArgs) Handles mnuSecuredItemEnableAccess.Click

    'Show Enable Access Form (frmFirstAccess)
    Dim frmFirstAccess As New frmFirstAccess()
    frmFirstAccess.ShowDialog()

End Sub

Private Sub tmrMainTimes_Tick(sender As Object, e As EventArgs) Handles tmrMainTimes.Tick

    ''Start Local Time
    'toolstripItemLocalTime.Text = Format(Now, "HH:mm:ss")

    ''Start Eve (UTC) Time
    'toolstripItemEveTime.Text = Format(Now.ToUniversalTime, "HH:mm:ss")

    dtLocalTime = DateTime.Now.ToString("HH:mm:ss")
    toolstripItemLocalTime.Text = dtLocalTime

    dtEveTime = DateTime.UtcNow.ToString("HH:mm:ss")
    toolstripItemEveTime.Text = dtLocalTime
End Sub

Private Sub TimersToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TimersToolStripMenuItem.Click

    Dim frmTimers As New frmTimers()
    frmTimers.ShowDialog()

End Sub
End Class
</code></pre>

<p>This works great!</p>

<p>The problem lies in the tools section where I am trying to give the user to initiate new timers. When I try to run a separate clock on this form, I initiate a different timer and execute the code in the same way, but the clock seems to lose a second compared to the other clocks.</p>

<pre><code>Public Class frmTimers

Private Sub frmTimers_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    ' Start Clock Timer for Timers
    TimersClocksStart.Interval = 1000
    TimersClocksStart.Start()

End Sub

Private Sub TimersClocksStart_Tick(sender As Object, e As EventArgs) Handles TimersClocksStart.Tick


    txtCurrRollEveClock.Text = dtEveTime
End Sub

End Class
</code></pre>

<p>How do I 1) fix this lag of one second between clocks and timers on multiple forms? 2) prevent it from happening again?</p>

<p>At most, in the application there will ever need to be twenty-five clocks/timers in five forms. At least there will need to be about ten in three forms</p>