Should we wait for the timer event (`TimerCallback`) to finish?
Otherwise 
```c#
using (var manualResetEvent = new ManualResetEvent(false))
{
    timer.Dispose(manualResetEvent);

    manualResetEvent.WaitOne();
}
```