У меня есть хранимая процедура , которая записывает резервную копию определенной базы данных. Я называю этот SP в приложении C # / Windows Forms асинхронно. Вот фрагмент кода:
IAsyncResult result = command.BeginExecuteNonQuery();
while (!result.IsCompleted)
{
System.Threading.Thread.Sleep(1000);
...
}
command.EndExecuteNonQuery(result));
Через некоторое время программа выходит из цикла, потому что IsCompleted = true и вызывает EndExecuteNonQuery.
Проблема в том, что задание все еще занято и EndExecuteNonQuery заблокировано !
Это приводит к превышению времени ожидания сервера через несколько минут.
Кажется, что значение IsCompleted не соответствует, соответственно, что не так с IsCompleted ?
Как мне добиться, чтобы моя программа распознала «статус реальной работы» ?