Оберните все операторы использования в try / catch. Как и все остальные, использование предназначено для очистки классов, реализующих интерфейс IDisposable
try
{
using (var conn = new SqlConnection("..."))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "...";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// ...
}
}
}
}
}
catch(Exception ex)
{
//Handle, log, rethrow exception
}
Вы можете увидеть трассировки стека для каждого активного потока в представлении отладчика . (Выполнить-> Отладчик). В верхней левой панели вы должны увидеть трассировку стека для текущего потока. Вверху должно быть написано что-то вроде "Thread-1",