you might wan to synchronize this with dispose below as it can happen on separate threads.   locking and checking for null timer should do (dispose will null it out etc.).