dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)

io starei attento qui

CommandBehavior.CloseConnection = Durante l'esecuzione del comando, l'oggetto Connection associato viene chiuso alla chiusura dell'oggetto DataReader associato