Hai due soluzioni: o il DataTable che non ha bisogno di connessioni aperte, oppure utilizzare la tecnica che usi adesso con un piccolo accorgimento: dare l'opzione CommandBehavior.CloseConnection con il datareader.
codice:
public MySQLDataReader Select(string query) {
MySQLConnection myConnection = new MySQLConnection("Database="+ dbHost +";Data Source="+ dbDataSource +";User Id="+ dbUser +";Password="+ dbPassword +"");
myConnection.Open();
MySQLCommand myCommand = new MySQLCommand(query, myConnection);
MySQLDataReader myReader = myCommand.ExecuteReaderEx(CommandBehavior.CloseConnection);
myReader.Read();
return myReader;
}
Questo ti consente, dopo la lettura del datareader, di chiudere insieme al datereader anche la connessione del database con un solo comando:
codice:
nome_tuo_datareader.Close();
L'unico dubbio è che non conoscendo quella dll per la connessione del database non so se supporta quell'opzione. In caso negativo l'uso del datatable ti risolve tutti i problemi 
Ciao