CA2000 object 'comm' is not disposed along all exception paths
<p>I have a bunch of methods like so in my DAL in VS 2010. When I run the "new" Code Analysis option i get the message - Warning   CA2000  object 'comm' is not disposed along all exception paths. Call System.IDisposable.Dispose on object 'comm' before all references to it are out of scope.</p>

<p>I understand I could use another using statement for the SQLCommand however if prefer to do it like I have with the Try/Finally block. My understanding is the Finally block executes last and does the cleanup. Does anyone see anything wrong here with my dispose call?    </p>

<pre><code>  public List&lt;Product&gt; GetAllProducts()
    {

        List&lt;Product&gt; prodList = new List&lt;Product&gt;();
        using (SqlConnection connection = new SqlConnection(GetConnection()))
        {
            SqlCommand comm = new SqlCommand("GetAllProducts", connection);
            connection.Open();
            comm.CommandType = CommandType.StoredProcedure;
            SqlDataReader dr = comm.ExecuteReader();
            try
            {
                while (dr.Read())
                {
                    Product obj = new Product();
                    obj.ProductID = Convert.ToInt32(dr["ProductID"].ToString());
                    obj.Product = dr["Product"].ToString();
                    //etc....                                                                       

                    prodList.Add(obj);
                }
            }
            finally
            {
                comm.Dispose();
                dr.Close();
            }
        }

        return prodList;
    }

}
</code></pre>
