Ho un httpclient come questo:Perché la prima chiamata HttpClient.PostAsync è estremamente lenta nella mia app Winforms C#?
var client = new HttpClient();
ho posto a in questo modo:
var result = client.PostAsync(
endpointUri,
requestContent);
e ottenere la risposta in questo modo:
HttpResponseMessage response = result.Result;
Capisco questa chiamata bloccherà il thread, ecco come dovrebbe funzionare (basta costruire uno strumento per me stesso, senza bisogno di thread asincroni)
La prima volta che eseguo questa chiamata, sono necessari circa 2 minuti per ottenere un risultato. Nel frattempo, se faccio esattamente la stessa chiamata altrove, è fatta in 200ms. Anche se clicco su Google, ci vogliono 2 minuti. Ma, dopo la prima chiamata, finché tengo l'app aperta, tutte le chiamate aggiuntive sono buone. È solo il primo cal quando apro l'applicazione. Che cosa potrebbe causare questo?
vorrei iniziare utilizzando '.ContinueWith' invece di' .Result' (di utilizzo 'asincrone/await' ...) - a parte questo non vedo nulla che potrebbe causare quel ritardo e, ad essere onesti, sospetto che il problema si trovi altrove – Carsten
Questo sarebbe facile se avessimo uno stack da guardare. Utilizzare il nuovo WebClient(). DownloadString() per scopi di test, mettere in pausa il debugger durante la pausa e inserire lo stack di chiamate incluso il codice esterno. Probabilmente dice qualcosa su DNS o proxy. – usr
Non posso iniziare a indovinare, ma vorrei iniziare escludendo la possibilità che farlo in modo sincrono sia il problema. HttpClient è stato progettato per essere solo asincrono e ci sono forti avvertenze sull'utilizzo in blocco. 'attendere il risultato' è semplice come risultato.Risultare quindi perché resistere all'uso corretto? –