Жизненный цикл страницы и асинхронные запросы в C # asp.net веб-формы

#c# #.net #asp.net #httpwebrequest #asynchronous

#c# #.net #asp.net #httpwebrequest #асинхронный

Вопрос:

Если я отправлю HttpWebRequest и отправлю его с помощью BeginGetResponse с обратным вызовом, мой обратный вызов никогда не будет выполнен. Страница завершается до получения ответа.

Как мне получить ответ?

Я попытался установить таймер:

   ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), null, DefaultTimeout, true);
  

но опять же, если DefaultTimeout (в миллисекундах) установлен на 1 миллисекунду, он достигает обратного вызова. Но если он установлен на 30 секунд, то обратный вызов никогда не запускается.

Как мне снова получить доступ к запросу / результату?

Ответ №1:

Если вы хотите дождаться завершения веб-запроса, прежде чем разрешить продолжение выполнения вашего кода, вам нужно будет использовать синхронный метод GetResponse вместо асинхронного метода BeginGetResponse . Это заблокирует текущий поток до завершения запроса.

Комментарии:

1. я не хочу этого ждать. я хочу, чтобы он запускался сам по себе и другим событием (нажатием другой кнопки), чтобы проверить, выполнено ли это