J'essaye de concevoir un navigateur qui récupérera des mises à jour de site par programme. J'essaye de faire ceci avec des méthodes async/await mais quand j'essaye et exécute le programme il semble juste se bloquer sur response.Wait() ;. Je ne sais pas pourquoi ou ce qui se passe.async httpclient operation
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;
}
}
classe navigateur ::
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;
}
}
En outre, pour mes fins prévues, il est autorisé à faire navigateur une fonction statique, ou est-ce que pas de sens? Désolé pour les questions, nouveau à C#
Est-ce qu'il vous permettra de faire MainWindow() 'une méthode' async'? Si vous pouvez alors vous pouvez simplement attendre à la place. Je suis assez sûr que 'Task.Wait()' est une méthode de blocage. – pquest
J'étais sous l'impression que mainwindow() est l'équivalent principal() dans WPF, donc c'est une méthode de blocage est attendue. – cubesnyc
J'ai modifié votre titre. S'il vous plaît voir, "[Les questions devraient inclure" tags "dans leurs titres?] (Http://meta.stackoverflow.com/questions/19190/)", où le consensus est "non, ils ne devraient pas". –