В кнопке Asp.Net веб-страницы нажмите У меня есть ниже кодЗадачи и планирование потоков в Asp.Net
//Code is running on Asp.Net worker Thread
var httpClient = new HttpClient();
var task = httpClient.GetAsync("/someapiCall"); //Creates a new thread and executed on it
task.Wait();
Теперь, когда я называю task.Wait, что будет происходить с рабочим потоком?
- Будет ли он находиться в состоянии ожидания в ожидании завершения вызова httpClient?
- Будет ли он возвращен в пул потоков и доступен для обработки других запросов?
Есть ли разница между кодом выше и ниже
var httpClient = new HttpClient();
var task = httpClient.GetAsync("/someapiCall"); //Creates a new thread and executed on it
ManualResetEvent mre = new ManualResetEvent(false);
task.ContinueWith((t) => { mre.Set(); });
mre.WaitOne();
Использование await означает, что я должен использовать обработчики Async-страниц правильно, иначе ответ вернется в браузер даже до завершения асинхронной задачи. –
@SriHarshaVelicheti Я так считаю. Взгляните на [это] (http://www.hanselman.com/blog/TheMagicOfUsingAsynchronousMethodsInASPNET45PlusAnImportantGotcha.aspx) – i3arnon