7
  _fbClient.GetCompleted += new EventHandler<FacebookApiEventArgs>(OnFetchPageNotification);
  _fbClient.GetAsync(_kNotificationPath, new Dictionary<string, object> { { "access_token", _kPageAccessToken } });

上記のコードをwp7で待機可能なコードに変換する方法:

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

CTPをインストールし、タスク並列ライブラリもインストールしています。

4

1 に答える 1

17

非同期CTPには、既存の各パターンをタスクベースの非同期パターンに適合させる方法を説明するドキュメントが付属しています。イベントベースのものはより可変的であると書かれていますが、1つの例を示しています。

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

ラップされている元の関数がである場合DownloadStringAsync、パラメーターはこの関数に渡されるパラメーターと一致し、DownloadStringCompleted監視されているイベントです。


(同じドキュメントがここからダウンロードできるようです。上記のサンプル(および詳細)は、「タスクとイベントベースの非同期パターン(EAP)」からのものです)

于 2012-10-12T07:03:03.023 に答える