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