在winform中,單擊按鈕調用此方法將鏈接內容下載爲字符串,然後在文本框中顯示字符串長度。這一切都是異步發生的。有沒有辦法做到這一點同步?如果這是在UI線程,你不應該這樣做運行在C#中,HttpClient.getStringAsync()方法的同步替代是什麼?
string response = client.GetStringAsync(...).Result;
但是:
在winform中,單擊按鈕調用此方法將鏈接內容下載爲字符串,然後在文本框中顯示字符串長度。這一切都是異步發生的。有沒有辦法做到這一點同步?如果這是在UI線程,你不應該這樣做運行在C#中,HttpClient.getStringAsync()方法的同步替代是什麼?
string response = client.GetStringAsync(...).Result;
但是:
你可以只取.Result
做任何任務塊。在UI線程上阻塞並不好。擁抱異步性。
謝謝......我全心全意擁抱它......只是想知道測試/學習的目的...... –
在做這件事之前只需考慮一件事:這完全改變了錯誤處理。您將僅通過設計接收AggregateExceptions,而不是WebException。並且在httpClient中似乎有一些錯誤會在超時的情況下創建通用的TaskCanceledException。 – Andreas
您可以使用方法WebClient.DownloadString。此方法阻止下載資源。
string response = new WebClient().DownloadString(uri);
https://msdn.microsoft.com/en-us/library/fhd1f0sw(v=vs.110).aspx
RestSharp是一個很好的開源替代HttpClient的。它支持同步和異步請求。
'DownloadString'? – AgentFire