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);
}
}