public async Task Initialize(DatabaseSession databaseSession, CancellationToken cancellationToken) { databaseSession = databaseSession.Owner ?? databaseSession; var oracleSessionValues = (OracleSessionValues)databaseSession.ProviderValues; if (_oracleSessionValues != null && _oracleSessionValues.Instance == oracleSessionValues.Instance && _oracleSessionValues.Id == oracleSessionValues.Id && String.Equals(_oracleSessionValues.SqlId, oracleSessionValues.SqlId) && _oracleSessionValues.ExecutionId == oracleSessionValues.ExecutionId) { await Refresh(cancellationToken); return; } Shutdown(); DatabaseSession = databaseSession; try { _oracleSessionValues = oracleSessionValues.Clone(); if (!String.IsNullOrEmpty(_oracleSessionValues.SqlId) && _oracleSessionValues.ExecutionId.HasValue) { var monitorDataProvider = new SqlMonitorDataProvider(_oracleSessionValues.Instance, _oracleSessionValues.Id, _oracleSessionValues.ExecutionStart.Value, _oracleSessionValues.ExecutionId.Value, _oracleSessionValues.SqlId, _oracleSessionValues.ChildNumber.Value); await OracleDatabaseModel.UpdateModelAsync(OracleConnectionStringRepository.GetBackgroundConnectionString(_connectionString.ConnectionString), null, false, cancellationToken, monitorDataProvider); _planItemCollection = monitorDataProvider.ItemCollection; _planItemCollection.RefreshPeriod = DefaultRefreshPeriod; //QueryCoordinatorLongOperations = _planItemCollection.QueryCoordinatorLongOperations; if (_planItemCollection.RootItem != null) { ExecutionPlanTreeView.RootItem = _planItemCollection.RootItem; SessionItems = _planItemCollection.SessionItems; var collectionView = CollectionViewSource.GetDefaultView(SessionItems); collectionView.SortDescriptions.Add(new SortDescription { PropertyName = "SessionIdentifier.Instance" }); collectionView.SortDescriptions.Add(new SortDescription { PropertyName = "ParallelServerGroup" }); collectionView.SortDescriptions.Add(new SortDescription { PropertyName = "ParallelServerSet" }); collectionView.SortDescriptions.Add(new SortDescription { PropertyName = "ParallelServerNumber" }); SummarySession.Inititalize(_planItemCollection); await SafeRefresh(); } } } finally { AutoRefreshEnabled = true; } }
public void Shutdown() { if (DatabaseSession != null) { DatabaseSession = null; _oracleSessionValues = null; } AutoRefreshEnabled = false; _planItemCollection = null; SessionItems = null; QueryCoordinatorLongOperations = null; SummarySession.Clear(); IsParallel = false; ExecutionPlanTreeView.RootItem = null; }