Windows is actually quite accurate in firing timer events at the correct time. Set your interval so the next event occurs at the correct time.
System.Timers.Timer Tmr = new System.Timers.Timer();
System.DateTime NextTime;
int Tmr_Elapsed_Count;
private void Tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Tmr.Stop();
Sub1();
if (Tmr_Elapsed_Count % 10 == 0)
{
Sub2();
}
Tmr_Elapsed_Count += 1;
NextTime = NextTime.Add(new TimeSpan(0, 10, 0));
Tmr.Interval = NextTime.Subtract(System.DateTime.Now).Milliseconds;
Tmr.Start();
}