Convertir un modèle basé sur un événement en un modèle CTP asynchrone

_fbClient.GetCompleted += new EventHandler(OnFetchPageNotification); _fbClient.GetAsync(_kNotificationPath, new Dictionary { { "access_token", _kPageAccessToken } }); 

Comment convertir le code ci-dessus en code attendu dans wp7:

  object = await _fbClient.GetAsync(_kNotificationPath, new Dictionary { { "access_token", _kPageAccessToken } }); 

J’ai la bibliothèque parallèle installée et de tâche CTP également.

Async CTP est livré avec un document décrivant comment adapter chaque modèle existant au modèle Async basé sur une tâche. Il dit que celui basé sur Event est plus variable, mais donne un exemple:

 public static Task DownloadSsortingngAsync(Uri url) { var tcs = new TaskCompletionSource(); var wc = new WebClient(); wc.DownloadSsortingngCompleted += (s,e) => { if (e.Error != null) tcs.TrySetException(e.Error); else if (e.Cancelled) tcs.TrySetCanceled(); else tcs.TrySetResult(e.Result); }; wc.DownloadSsortingngAsync(url); return tcs.Task; } 

DownloadSsortingngCompleted est la fonction d’origine encapsulée, les parameters correspondent aux parameters transmis à cette fonction et DownloadSsortingngCompleted est l’événement surveillé.


(Le même document semble être téléchargeable ici – l’exemple ci-dessus (et une description plus détaillée) provient de “Tâches et modèle asynchrone (EAP) basé sur des événements”)