Windows 8 앱의 비동기 함수를 사용하여 웹 사이트를 다운로드하고 구문 분석하려고합니다.HttpClient GetAsync가 Windows 8에서 void가 아닌 반환 유형으로 완료되지 않습니다.
나는이 방법에서 다운로드 코드를 호출 :
private async Task<Show> getSeasonAndEpisodeInformation(Show currentShow)
{
int seriesID = currentShow.SeriesID;
EpisodeBuilder epBuilder = new EpisodeBuilder(seriesID);
List<Episode> eps = await epBuilder.getEpisodeList();
SeasonBuilder seasonBuilder = new SeasonBuilder(eps);
return currentShow;
}
그리고 getEpisodeList() 함수 것은 :
public async Task<List<Episode>> getEpisodeList()
{
httpClient = new HttpClient();
httpClient.MaxResponseContentBufferSize = 2560000;
httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
try
{
List<Episode> episodes = new List<Episode>();
HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.example.com"));
response.EnsureSuccessStatusCode();
//Never get here
return episodesList;
}
catch (Exception)
{
}
return null;
}
나는 getEpisodeList 방법은 무효가있는 경우 다음 웹 페이지를 다운로드하고 계속 . 디버깅을 완료하고 결코 완료되지 않은 httpClient.GetAsync (..) 행인지 확인했습니다. 이 주변에 어쨌든 있습니까?
getSeasonAndEpisodeInformation 메소드에서 계속하기 전에 getEpisodeList() 메소드가 리턴되었는지 확인해야합니다. 따라서 epBuilder.getEpisodeList()를 호출 할 때 await 키워드를 사용하십시오.
예외를 삼키지 마십시오. – SLaks
나는 내 코드에서 좀 더 나은 예외 처리를하고있다. – TheSteak