Trong một biểu mẫu, nhấp vào nút gọi phương thức này để tải xuống nội dung liên kết dưới dạng chuỗi và sau đó hiển thị độ dài chuỗi trong hộp văn bản. Tất cả điều này xảy ra không đồng bộ. Có cách nào để thực hiện việc này một cách đồng bộ không?Trong C#, phương thức thay thế đồng bộ cho phương thức HttpClient.getStringAsync() là gì?
Trả lời
Bạn có thể thực hiện bất kỳ khối nhiệm vụ bằng cách chỉ lấy .Result
:
string response = client.GetStringAsync(...).Result;
Tuy nhiên nếu điều này đang chạy trên một sợi UI, bạn không nên làm điều đó. Chặn trên chuỗi giao diện người dùng không đẹp. Embrace asynchronicity.
cảm ơn ... tôi ôm lấy nó bằng cả trái tim mình ... chỉ muốn biết về mục đích thử nghiệm/học tập ... –
Chỉ cần một điều cần suy nghĩ trước khi thực hiện việc này: Điều này thay đổi hoàn toàn việc xử lý lỗi. Thay vì WebException bạn sẽ chỉ nhận được AggregateExceptions theo thiết kế. Và dường như có một số lỗi trong httpClient tạo ra một TaskCanceledException chung trong trường hợp hết thời gian chờ. – Andreas
Bạn có thể sử dụng phương pháp WebClient.DownloadString. Phương pháp này chặn trong khi tải xuống tài nguyên.
string response = new WebClient().DownloadString(uri);
https://msdn.microsoft.com/en-us/library/fhd1f0sw(v=vs.110).aspx
RestSharp là tốt mã nguồn mở thay thế cho HttpClient. Nó hỗ trợ cả yêu cầu đồng bộ và không đồng bộ.
- 1. Các phương thức đồng bộ trong C#
- 2. Mã chặn # c trong phương thức không đồng bộ
- 3. Cách tạo phương thức không đồng bộ
- 4. Thay thế cho phương thức Normalizer.getClass (c) trong Java 6
- 5. Đang chờ phương thức không đồng bộ
- 6. Nếu phương thức được đồng bộ hóa gọi phương thức không đồng bộ khác, có khóa trên phương thức không đồng bộ
- 7. Chi phí đồng bộ hóa gọi phương thức được đồng bộ hóa từ phương thức được đồng bộ hóa là gì?
- 8. Đợi phương thức không đồng bộ void
- 9. "tạo phương thức" có nghĩa là gì trong C#?
- 10. Phương thức restTemplate.exchange() là gì?
- 11. Ý nghĩa của phương thức Thread.Join trong C# là gì?
- 12. được đồng bộ hóa với phương thức toArray() của Collection?
- 13. Tạo một phương thức đồng thời là một thể hiện và phương thức lớp
- 14. Gọi một phương thức không đồng bộ từ một phương pháp không đồng bộ
- 15. Biểu tượng phương thức cho + = trong ruby là gì?
- 16. Có an toàn khi gọi phương thức được đồng bộ từ một phương thức được đồng bộ khác không?
- 17. Sự khác nhau giữa phương thức được đồng bộ hóa và khối đồng bộ trong Java là gì?
- 18. Loại VoidTaskResult là gì khi nó liên quan đến các phương thức không đồng bộ?
- 19. Nhận kết quả của phương thức không đồng bộ
- 20. Phương thức gọi Không đồng bộ trong EJB
- 21. Gọi và giả mạo phương thức không đồng bộ
- 22. Lý do cho phương thức size() của BitSet là gì?
- 23. Kiểm tra cuộc gọi phương thức không đồng bộ
- 24. @synchronized trong phương thức tĩnh
- 25. sự khác nhau giữa phương thức chuỗi và phương thức str trong Python là gì?
- 26. Gọi phương thức không đồng bộ trên nút bấm
- 27. LD_PRELOAD cho các phương thức lớp C++
- 28. Phương thức thay thế không hoạt động
- 29. Quá tải phương thức trong Objective-C?
- 30. Phương thức `map` có nghĩa là gì trong RxJS?
'DownloadString'? – AgentFire