Kevin brought up a good point in the comments. It's easiest to just put your connection in a using statement so it is automatically disposed of when not in use.
// connectionString must be set up
using (SqlConnection connection = new SqlConnection(connectionString))
{
// Do stuff with connection to DB
}
You were wondering if Dispose needed to ever be called and if it would have an impact on user connection. Actually, the using statement calls Dispose() itself, as you can see here. "The using statement calls the Dispose method on the object in the correct way..." So, I believe your issue may be because your original way of opening/closing the connections left hanging connections. Instead, using the using
statement, your connections will automatically be closed once the code leaves the block.