我正在爲Windows 8編寫一個應用程序,它需要獲取特定站點的HTML。當我將它編入MainPage中的按鈕事件時,它運行良好。然而,當我試圖做它在我的課「樂隊」:使用await阻礙程序的進程
public Band(String Name)
{
this.Name = Name;
GetHtmlDocument();
GenerateId();
GetAlbumDocument();
GenerateLogo();
GeneratePhoto();
CreateAlbumList();
}
private async void GetHtmlDocument()
{
HttpClientHandler handler = new HttpClientHandler();
HttpClient client = new HttpClient(handler as HttpMessageHandler) { BaseAddress = new Uri(@"http://www.metal-archives.com/bands/" + Name) };
var r = await client.GetAsync(client.BaseAddress);
string html = null;
if (r.IsSuccessStatusCode) html = await r.Content.ReadAsStringAsync();
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(html);
DocumentBand = document;
}
它來到
var r = await client.GetAsync(client.BaseAddress);
線,然後從GenerateId()
方法進行,因爲它是在構造函數中。但爲了處理GenerateId()
方法,必須完成GetHtmlDocument()
方法。我應該在這種情況下做什麼?
我的主要語言是Java,我對C#很陌生,所以可能會出現巨大的編碼或命名錯誤。
我做了你所說的; 'var r = await GetHtmlDocument();',但現在它給出了另一個錯誤** Explore_a_Metal_Band.Band.GetHtmlDocument()不返回任務,不能等待。考慮改變它返回Task。**。你能詳細說明一下嗎? –
這將不起作用,因爲對'GetHtmlDocument'的調用在構造函數中。那裏(在構造函數中)不支持'async'關鍵字,這意味着'await'不能在那裏使用。 –
'await'不能在構造函數中使用,所以它不起作用。我錯了嗎?你能詳細說明一下嗎? –