2014-10-22 3 views
2

Интересно, если этот код работает, как ожидалось (отправить строку веб-приложения):Нужно ли ждать завершения асинхронного метода перед удалением HttpClient?

using (HttpClient httpClient = Util.CreateHttpClient()) 
{ 
    httpClient.PostAsJsonAsync("theurl", somestr); 
} 

Поскольку PostAsJsonAsync не полное исполнение немедленно, и HTTPClient расположен при выходе из блока, является запрос всегда передается должным образом?

Или я должен ждать для выполнения этой задачи, как это:

using (HttpClient httpClient = Util.CreateHttpClient()) 
{ 
    httpClient.PostAsJsonAsync("theurl", somestr).Wait(); 
} 

ответ

2

При использовании асинхронного API из HttpClient, его рекомендуемые вы await эти методы:

using (HttpClient httpClient = Util.CreateHttpClient()) 
{ 
    await httpClient.PostAsJsonAsync("theurl", somestr); 
} 

Таким образом, вы обеспечиваете завершение асинхронного метода, и вы убедитесь, что HttpClient не расположен, пока запрос не посылается ,

Если вам нужен синхронный API, рассмотрите вопрос о WebClient.

0

Вы должны ждать или держать клиента в области.

+0

У вас есть источник этого? –

Смежные вопросы