Gestire le chiamate HTTP asincrone con Task Parallel Library in Silverlight 5.0

di Alessio Leoncini, in Silverlight,

In Silverlight 5 è stato incluso un sottinsieme del Task Parallel Library presente nel .NET Framework 4.0, con questa libreria possiamo eseguire con grande semplicità operazioni multi-thread tra cui le chiamate HTTP che, come noto, in Silverlight possono essere gestite esclusivamente con il modello begin/end.

Grazie alla classe TaskFactory, esposta dalla proprietà Factory di Task, possiamo utilizzare il metodo FromAsync ed il metodo ContinueWith con la sintassi 'fluent' tipica dell'RX Framework.

Nell'esempio seguente possiamo vedere come sia semplificato il codice di una chiamata ad un file remoto grazie al Task Parallel Library.

string uri = "https://www.silverlightitalia.com/script/images/135.xml";

var request = WebRequest.Create(uri);
Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse,
                                    request.EndGetResponse,
                                    null).ContinueWith(task =>
{
    string msg;
    var response = (HttpWebResponse)task.Result;
    using (var reader = new StreamReader(response.GetResponseStream()))
    {
        msg = reader.ReadToEnd();
    }
    Dispatcher.BeginInvoke(() => MessageBox.Show(msg));
});

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi