2016-03-06 40 views
5

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ì?

+0

'DownloadString'? – AgentFire

Trả lời

9

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.

+1

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 ... –

+0

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

1

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ộ.

http://restsharp.org/

Các vấn đề liên quan