public void Dispose() { if (!disposed) { Log.Debug("Disposing PlayerController"); ReconfigureTimeout(0); IgnoreTicks = true; seeker.Dispose(); timer.Dispose(TimerDisposed); TimerDisposed.WaitOne(200); TimerDisposed.Dispose(); player.Error -= HandleError; player.StateChange -= HandleStateChange; player.Eos -= HandleEndOfStream; player.ReadyToSeek -= HandleReadyToSeek; player.Dispose(); FileSet = null; } disposed = true; }