The VB version doesn't have
tia.Stop()
at the top of the tick event handler.
I have to ask why you're stopping/starting the timer like that though. Instead of doing that, set a flag indicating the timer event is busy, and if it is when a timer event comes through, just exit the method:
public partial class MyService
{
bool isBusy = false;
private void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
if (!isBusy)
{
isBusy = true;
isBusy = false;
}
}
}