我想設計一個瀏覽器,以編程方式獲取網站更新。我試圖用async/await方法做到這一點,但是當我嘗試運行程序時,它似乎只是掛在response.Wait();.不知道爲什麼或什麼發生。異步httpclient操作
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var urls = sourceUrls();
Task<HttpResponseMessage> response = login(urls[0]);
response.Wait();
Console.Write("Complete");
}
private List<Site> sourceUrls()
{
var urls = new List<Site>();
urls.Add(new Site("http://yahoo.com", "test", "test"));
return urls;
}
}
瀏覽器類::
static public class Browser
{
private static CookieContainer cc = new CookieContainer();
private static HttpClientHandler handler = new HttpClientHandler();
public static HttpClient browser = new HttpClient(handler);
static Browser()
{
handler.CookieContainer = cc;
}
static public async Task<HttpResponseMessage> login(Site site)
{
var _postData = new Dictionary<string, string>
{
{"test", "test"}
};
FormUrlEncodedContent postData = new FormUrlEncodedContent(_postData);
HttpResponseMessage response = await browser.PostAsync(site.url, postData);
return response;
}
}
而且,我的預期目的,是確定以使瀏覽器的靜態函數,或者根本不是什麼意義?對不起,我對c#有新問題。
它會讓你使'MainWindow()''async'方法嗎?如果可以的話,你可以直接等待。我很確定'Task.Wait()'是一個阻塞方法。 – pquest
我的印象是mainwindow()是WPF中的main()等價物,所以它是一個阻塞方法。 – cubesnyc
我編輯了你的標題。請參閱「[應該在標題中是否包含」標籤「](http://meta.stackoverflow.com/questions/19190/)」,其中共識是「不,他們不應該」。 –