У меня есть приложение Windows Forms на C# /. NET4 с концом SQL 2008. Я открываю SqlConnection в моей кнопки мыши обработчик события, а затем вызвать несколько backgroundworkers каждый из которых вызывает метод CreateCommand соединения как внутри с помощью блока:Несколько вызовов CreateCommand на том же SqlConnection
private void btnSubmit_Click(object sender, EventArgs e)
{
cn.Open();
bw01.RunWorkerAsync(x);
bw02.RunWorkerAsync(x);
while (bw01.IsBusy || bw02.IsBusy)
Application.DoEvents();
cn.Close();
}
private void bw01_DoWork(object sender, DoWorkEventArgs e)
{
try
{
using (SqlCommand cmd = cn.CreateCommand())
{
cmd.CommandText = <some SQL>
e.Result = Convert.ToInt32(cmd.ExecuteScalar());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
private void bw02_DoWork(object sender, DoWorkEventArgs e)
{
try
{
using (SqlCommand cmd = cn.CreateCommand())
{
cmd.CommandText = <some SQL>
e.Result = Convert.ToInt32(cmd.ExecuteScalar());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
код работает некоторое время, но иногда я получаю ошибки , чаще всего «Существенная ошибка произошла в текущей команде. Результаты, если они должны быть отброшены».
У меня MultipleActiveResultSets = true в моей строке подключения. Что я делаю не так?
Ах, не понимал этого. Изменен мой шаблон, и он работает как шарм. Вы спасли мою ночь. –
@AlineBernstein - отметьте его как ответ, тогда – fenix2222