समाप्त नहीं होता है, मैं एसिंक कार्य (.NET 4.5 पर) शुरू करने की कोशिश कर रहा हूं जो वेब पेज की सामग्री डाउनलोड करता है, लेकिन किसी भी तरह यह कार्य कभी खत्म नहीं होता है।Async कार्य
मेरे PageDownloader
वर्ग:
using System.Net;
using System.Text;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using System;
namespace ParserConsole.WebClient
{
public class PageDownloader
{
private System.Net.Http.HttpClient _client;
public PageDownloader()
: this(Encoding.UTF8) { }
private Encoding _encoding;
public PageDownloader(Encoding encoding)
{
_encoding = encoding;
_client = new HttpClient() { Timeout = TimeSpan.FromSeconds(10)};
}
private HttpRequestMessage _request;
private HttpResponseMessage _response;
private string _responseString;
public string GetPageData(string link)
{
_request = new HttpRequestMessage(HttpMethod.Get, link);
_request.Headers.Add("User-Agent", "Chrome/21.0.1180.89");
_request.Headers.Add("Accept", "text/html");
GetResponse().Wait();
GetStringFromResponse().Wait();
return _responseString;
}
private async Task<HttpResponseMessage> GetResponse() {
return _response = await _client.GetAsync(_request.RequestUri);
}
private async Task<string> GetStringFromResponse() {
return _responseString = await _response.Content.ReadAsStringAsync();
}
}
}
मैं पेज डाउनलोड करना शुरू
new PageDownloader().GetPageData(url);
बुला जब मैं कोड डिबग करने के लिए कोशिश कर रहा हूँ से, सब कुछ GetResponse().Wait()
तक ठीक है। लेकिन किसी भी तरह GetResponse()
कार्य कभी खत्म नहीं होता है - अगली पंक्ति पर ब्रेकपॉइंट कभी नहीं पहुंचता है। मुझे कोई अपवाद नहीं है, एप्लिकेशन चल रहा है। कोई सुझाव?
अच्छे उत्तर के लिए धन्यवाद। क्या आप यह भी समझा सकते हैं कि मुझे कॉलिंग कोड में प्रतिक्रिया कैसे संभालना चाहिए? –
@YuriyPogrebnyak मैं पहले से ही संपादन की प्रक्रिया में था। – Servy