У меня есть два процесса, запущенных в моем потоке пользовательского интерфейса. Однако, когда я запускаю первый, с функциональностью BeginGetStream, он входит в цикл и ожидает его выполнения и возвращает результат, когда вы будете готовы, но во втором прогоне, через функциональность BeginGetResponse, этот «умирает» там, и программа не продолжать и не возвращает мне нужное значение. В этих процессах используйте IasynResult.
Я пробовал:
Преобразовать в задачу (Task.Run)
Назначьте процессу новый поток (Thread x = new Thread ())
Установите параметр ConfigureAwait (ConfigureAwait (continueOnCapturedContext: false), ConfigureAwait (false));
Преобразуйте в методы asyncronos и примените "ожидание"
Используйте AutoResetEvent, чтобы дождаться завершения процесса и не продолжать.
Размещение потока в спящем режиме (Thread.Sleep)
- Использование Thread.Start, Thread.Join
Пример кода:
Первый запрос:
int number = 123;
1Request.Headers["Teste"] = string.Format("Teste{0}", number);
IAsyncResult AsyncronousResult= null;
try
{
await Task.Run(() => 1Request.BeginGetRequestStream(
(IAsyncResult result) =>
{
AsyncronousResult= result;
//handle.Set();
}, 1Request));
Task.WaitAny();
}
catch (Exception) { }
Второй запрос:
HttpWebRequest 2request = (HttpWebRequest)AsyncronousResult.AsyncState;
IAsyncResult AsyncronousResult = null;
Try
{
await Task.Run(() => 2request.BeginGetResponse(
(IAsyncResult result) =>
{
AsyncronousResult = result;
}, 2request));
Task.WaitAny();
}
catch
{
}
... Не знаю, что еще попробовать ... Кто-нибудь может мне помочь.
Спасибо.