.net SqlConnection not being closed even when within a using { }

后端 未结 6 835
攒了一身酷
攒了一身酷 2021-02-13 02:06

Please help!

Background info

I have a WPF application which accesses a SQL Server 2005 database. The database is running locally on the machine the appl

6条回答
  •  清酒与你
    2021-02-13 02:12

    Well thanks for the help chaps, it has been solved now..

    Essentially I took elements of most of the answers above and implemented the DataContext constructor as above (I already had overloaded the constructors so it wasn't a big change).

    // Variable for storing the connection passed to the constructor
    private System.Data.SqlClient.SqlConnection _Connection;
    
    public DataContext(System.Data.SqlClient.SqlConnection Connection) : base(Connection)
    {
        // Only set the reference if the connection is Valid and Open during construction
        if (Connection != null)
        {
            if (Connection.State == System.Data.ConnectionState.Open)
            {
                _Connection = Connection;                    
            }
        }           
    }
    
    protected override void Dispose(bool disposing)
    {        
        // Only try closing the connection if it was opened during construction    
        if (_Connection!= null)
        {
            _Connection.Close();
            _Connection.Dispose();
        }
    
        base.Dispose(disposing);
    }
    

    The reason for doing this rather than some of the suggestions above is that accessing this.Connection in the dispose method throws a ObjectDisposedException.

    And the above works as well as I was hoping!

提交回复
热议问题