Tôi đang cố gắng thiết kế một trình duyệt sẽ tìm nạp các cập nhật trang web theo chương trình. Tôi đang cố gắng để làm điều này với các phương pháp async/await nhưng khi tôi cố gắng và chạy chương trình có vẻ như chỉ treo trên response.Wait() ;. không chắc chắn tại sao hoặc những gì đang xảy ra.hoạt động async 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;
}
}
lớp trình duyệt ::
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;
}
}
Ngoài ra, với mục đích dự định của tôi, là nó ok để làm cho trình duyệt một hàm tĩnh, hoặc Điều đó không có ý nghĩa? Xin lỗi cho các câu hỏi, mới đến C#
nó sẽ cho phép bạn thực hiện 'MainWindow()' một phương thức 'async'? Nếu bạn có thể thì bạn chỉ có thể chờ đợi thay thế. Tôi khá chắc chắn rằng 'Task.Wait()' là một phương pháp chặn. – pquest
tôi đã được ấn tượng rằng mainwindow() là chính() tương đương trong WPF, do đó, nó là một phương pháp chặn dự kiến. – cubesnyc
Tôi đã chỉnh sửa tiêu đề của bạn. Vui lòng xem, "[Câu hỏi có bao gồm" thẻ "trong tiêu đề của chúng không?] (Http://meta.stackoverflow.com/questions/19190/)", trong đó sự đồng thuận là "không, chúng không nên". –