public void Dispose() { try { if (_grids != null) { foreach (IGrid grid in _grids) { grid.Dispose(); } _grids.Clear(); } if (_dataSource != null) { _dataSource.DataSourceChanged -= new EventHandler(DataSourceChanged); _dataSource.Dispose(); _dataSource = null; } _currentRuntimeProjecter = null; _gridDefinition = null; _limiter = null; } finally { _disposed = true; } }