private void CloseConnection()
 {
     if (this.m_needToCloseConnection)
     {
         RuntimeDataSource.CloseConnection(this.m_connection, this.m_dataSource, this.m_odpContext, this.m_executionMetrics);
         if (this.NeedsExecutionLogging && this.m_odpContext.ExecutionLogContext != null)
         {
             int num = (this.m_runtimeDataSets != null) ? this.m_runtimeDataSets.Count : 0;
             List <DataProcessingMetrics> list = new List <DataProcessingMetrics>();
             for (int i = 0; i < num; i++)
             {
                 if (this.m_runtimeDataSets[i].IsConnectionOwner)
                 {
                     this.m_odpContext.ExecutionLogContext.AddDataSourceParallelExecutionMetrics(this.m_dataSource.Name, this.m_dataSource.DataSourceReference, this.m_dataSource.Type, this.m_runtimeDataSets[i].DataSetExecutionMetrics);
                 }
                 else
                 {
                     list.Add(this.m_runtimeDataSets[i].DataSetExecutionMetrics);
                 }
             }
             this.m_odpContext.ExecutionLogContext.AddDataSourceMetrics(this.m_dataSource.Name, this.m_dataSource.DataSourceReference, this.m_dataSource.Type, this.m_executionMetrics, list.ToArray());
         }
     }
     this.m_connection = null;
 }
示例#2
0
 protected void CloseConnection()
 {
     if (this.m_isConnectionOwner && this.m_dataSourceConnection != null)
     {
         RuntimeDataSource.CloseConnection(this.m_dataSourceConnection, this.m_dataSource, this.m_odpContext, this.m_executionMetrics);
         this.m_dataSourceConnection = null;
     }
 }
        public void Close()
        {
            IDataReader dataReader = Interlocked.Exchange <IDataReader>(ref this.m_dataReader, (IDataReader)null);

            if (dataReader != null)
            {
                QueryExecutionUtils.DisposeDataExtensionObject(ref dataReader, "data reader", this.m_dataSet.Name, this.m_executionMetrics, DataProcessingMetrics.MetricType.DisposeDataReader);
            }
            this.m_commandWrappedForCancel = null;
            IDbCommand dbCommand = Interlocked.Exchange <IDbCommand>(ref this.m_command, (IDbCommand)null);

            if (dbCommand != null)
            {
                QueryExecutionUtils.DisposeDataExtensionObject(ref dbCommand, "command", this.m_dataSet.Name);
            }
            IDbConnection dbConnection = Interlocked.Exchange <IDbConnection>(ref this.m_connection, (IDbConnection)null);

            if (dbConnection != null)
            {
                RuntimeDataSource.CloseConnection(dbConnection, this.m_dataSource, this.m_odpContext, this.m_executionMetrics);
            }
        }