Как я могу отменить запрос к базе данных в ASP.NET, когда браузер пользователя отключается? - PullRequest
6 голосов
/ 05 марта 2010

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 05 марта 2010

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

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

ссылка, показывающая отмену

1 голос
/ 05 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...