Webページのコンテンツをダウンロードする非同期タスク(.NET 4.5上)を開始しようとしていますが、どういうわけかこのタスクは終了しません。
私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()
タスクが終了しません-次の行のブレークポイントに到達しません。例外は発生しません。アプリケーションは引き続き実行されます。助言がありますか?