2012-01-23 15 views
5

Sto cercando di scrivere un'applicazione Silverlight utilizzando l'await/async 'modello' (usando SL5 e VS11), ma non riesco a selezionare il 'Genera Task-Based operazioni' nella configurazione di servizio , questo dovrebbe essere possibile (ancora)? Non riesco a trovare molti dettagli sul web (specifico per SL) ...Task-Based in Silverlight

+0

Sono stato in grado di riprodurre la situazione: l'intera sezione "Client" della finestra di dialogo Impostazioni riferimento servizio è disattivata per i progetti SL. Potresti voler aprire un problema con Microsoft Connect solo per richiamarlo prima che venga rilasciato VS11. –

+0

Grazie Stephen, quindi non ho bisogno di amministrare me stesso in un ospedale psichiatrico per questo :) –

+0

Ho aggiunto un problema MS Connect per questo, nessuna attività ancora: https://connect.microsoft.com/VisualStudio/ feedback/dettagli/722368/await-async-pattern-in-sl5 –

risposta

0

Sono stato in grado di creare manualmente proxy di servizio asincrono basato su attività in Silverlight 5 e Visual Studio 2010.
Funziona come fascino.
Io personalmente preferisco per codificare i miei contratti e proxy del servizio manualmente, ma se vi piace usare generare riferimento servizio potete dare un'occhiata a this post - WCF + Tasks.

+0

Com'è collegato alla funzionalità attesa/asincrona in VS11? (o CTP asincrona per quella materia?) –

+1

Per quanto ne so, puoi usare async/attendere la sintassi con qualsiasi metodo che restituisca Task o Task . – ViktorZ

+1

@ViktorZ o Void –

0

Penso che non sia supportato in Silverlight ma è possibile farlo da soli, Forse una libreria di classi portatile sarebbe un'altra soluzione per questo.

public class MyCServiceProxy 
{ 
    public static Task<ObservableCollection<MyC>> GetMyCs() 
    { 
     var tcs = new TaskCompletionSource<ObservableCollection<MyC>>(); 

     var client = new MyCServiceClient(); 

     client.GetMyCsCompleted += (s,e) => {}; 

     client.GetMyCsAsync(); 

     return tcs.Task; 
    } 
}