Как я могу отменить запрос базы данных в ASP.NET, когда браузер пользователя разъединяется?

Мой ASP.NET (3.5) приложение позволяет пользователям выполнять некоторые сложные запросы, которые могут занять до 4 минут для возврата результатов.

Когда я сделаю длинные циклы кода, я проверю Response.IsClientConnected() иногда, таким образом, я могу закончить страницу, если пользователь закрывает их браузер или поражает кнопку остановки.

Но при запросах SQL Server, мой код.NET заблокирован в вызове к GetDataReader().

Существует ли простой способ сделать GetDataReader () асинхронно, таким образом, я могу ждать его, но все еще проверить, скажем, каждые 5-10 секунд, чтобы видеть, соединен ли пользователь все еще, и залог на запросе базы данных, если они уехали?

Или есть ли некоторая другая альтернатива, о которой я не думаю?

6
задан richardtallent 5 March 2010 в 19:56
поделиться

2 ответа

вы можете использовать BeginExecuteReader команды sql, чтобы получить асинхронный sqlreader пример

не на 100% уверены, что это то, что вам нужно?

ссылка показывает отменить

5
ответ дан 17 December 2019 в 02:27
поделиться

Я бы предложил создать объект, который имеет методы Start () и Wait () , инкапсулирующие ваш запрос. Внутренне используйте ManualResetEvent , чтобы дождаться завершения запроса. Вы будете использовать функцию Set () , когда запрос будет завершен, и метод WaitOne () или WaitOne (TimeSpan ts) , чтобы ждать его в ваш метод Wait () .

1
ответ дан 17 December 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: