J'ai commencé à développer une application dans Silverlight qui consistait à télécharger le code HTML d'un site Web, puis à l'analyser. Avec Silverlight 4, cela peut être réalisé facilement en demandant simplement des permissions élevées. Avec Silverlight 3, cependant, la seule façon d'obtenir le code HTML d'un site Web est via un appel WebService. Mon idée initiale était de faire ce qui suit:Appel de WebClient dans WebService
public class Service1
{
[OperationContract]
public void GetHtml()
{
Uri targetUri = new Uri("http://www.google.com", UriKind.RelativeOrAbsolute);
WebClient webClient = new WebClient();
webClient.DownloadStringCompleted += this.WebClient_DownloadStringCompleted;
webClient.DownloadStringAsync(targetUri);
}
private void WebClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
}
}
Cependant, je me suis aperçu que, dès que je fais l'appel, qui est async aussi bien, de mon application Silverlight, il n'y a aucun moyen pour moi de récupérer le code HTML du site Web. C'est pourquoi je suis passé à ce qui suit:
public class Service1
{
[OperationContract]
public string GetHtml()
{
Uri targetUri = new Uri("http://www.google.com", UriKind.RelativeOrAbsolute);
WebClient webClient = new WebClient();
return webClient.DownloadString(targetUri);
}
}
Je crois que la dernière approche n'est pas très bonne puisqu'elle va geler le fil. Donc, ma question, est là un moyen d'atteindre la première approche a.k.a faire un appel asynchrone à partir d'un appel asynchrone :). Toute aide serait grandement appréciée.
Cordialement, Kiril
Je ne suis pas sûr de comprendre le problème. La deuxième version de votre code gèlera uniquement le thread sur le serveur. Votre application cliente restera "dégelée" pendant que l'appel SL -> Service est en cours. –
C'est ce que j'essaie d'éviter - le gel du serveur. Si je fais l'appel WebClient en utilisant DownloadStringAsync, le serveur ne sera pas gelé, mais comment obtenir les données retournées dans le gestionnaire d'événements DownloadStringCompleted? –
Ah, désolé à ce sujet. J'ai mal compris votre question. –