Ho un progetto winforms che dipende da una libreria personalizzata. Tutto con l'app funziona perfettamente, tranne un problema che non riesco a definire. Fondamentalmente Ho una forma che viene creato da un altro modulo che visualizza come una finestra di dialogo:L'interruzione di dubugger non "funziona". L'esecuzione del codice continua
DataItems.ImportForm frmImportTextDelimited = new DataItems.ImportForm();
frmImportTextDelimited.ShowDialog();
Questa forma di dialogo popola un elenco a discesa dal SqlServer usando la funzione di sotto del quale è da una libreria di classi nella soluzione:
public class AuthorityTypeSearcher
{
public List<IntValuePair> GetAllAuthorityTypes()
{
List<IntValuePair> returnList = new List<IntValuePair>();
using (var conn = new SqlConnection(Globals.ConnString))
{
var cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT FROM tblAuthorityTypes";
conn.Open();
IntValuePair ivp;
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
ivp = new IntValuePair();
ivp.TheInt = Convert.ToInt32(rdr["ID"]);
ivp.TheValue = rdr["AuthorityType"].ToString() ;
}
}
return returnList;
}
Questa funzione non restituisce un valore, in modo da impostare un punto di interruzione sulla linea:
conn.Open();
Quando il codice viene eseguito, Visual Studio rompe correttamente questa linea. Quello che sta facendo impazzire è che quando faccio un passo in avanti per la linea:
SqlDataReader rdr = cmd.ExecuteReader();
Il debugger non si sposta in avanti alla riga successiva, e l'esecuzione di codice sembra di tornare all'interfaccia utente (viene visualizzato il modulo). Ciò che è anche strano è che se interagisco con il modulo (cioè, clicco su un pulsante sul modulo che popola un altro campo), il debugger si interrompe di nuovo, torno allo studio visivo, che si "spezza" correttamente alla linea relativa a quell'operazione. Sembra che, per qualsiasi motivo, quando arrivo alla linea che crea il lettore di dati, l'esecuzione del codice semplicemente "lascia" la libreria e ritorna all'app winforms.
Quando l'esecuzione del codice sembra essere tornata all'interfaccia utente, se torno allo studio visivo sembra che l'esecuzione del codice continui, almeno non riesco a fare clic su "continua" (riproduzione). L'esecuzione del codice non è "in pausa".
Qual è anche strano è che se chiudo la forma (finestra), si rompe di nuovo nel debugger sulla linea dal modulo principale sulla linea:
frmImportTextDelimited.ShowDialog();
come se fossi ancora il debug.
Speriamo che questo abbia senso? Non riesco a capire perché, durante il debug, non riesca a superare la riga in cui creo il lettore di dati e perché l'esecuzione del codice ritorni all'interfaccia utente, ma ritorna al debugger con la finestra di dialogo chiusa. Nessun errore è mai stato lanciato.
Grazie per qualsiasi consiglio!
È solo un refuso? La query sql non ha l'elenco di colonne da restituire. – Steve
Hai '" SELECT FROM tblAuthorityTypes "' come tua richiesta. Intendevi qualcosa come, '" SELECT * FROM tblAuthorityTypes "'? – Brian
In genere ma per i calci l'ho aggiornato a "SELECT ID, AuthorityType FROM tblAthorityTypes" con gli stessi risultati. – rune711