public void Dispose() { // Dispose and remove each provider for (int i = Providers.Count - 1; i >= 0; i--) { var provider = providers[i] as IDisposable; if (provider != null) { provider.Dispose(); } Providers.RemoveAt(i); } }