c# – 将基于事件的模式转换为异步CTP模式

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

如何将上面的代码转换为wp7中的等待代码

object = await _fbClient.GetAsync(_kNotificationPath,_kPageAccesstoken } });

我也有CTP安装和任务并行库.

解决方法

Async CTP附带了一个文档,该文档描述了如何使每个现有模式适应基于任务的异步模式.它说基于事件的一个更可变,但确实给出了一个例子:
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是被监视的事件.

(同一文档似乎可以下载here – 上面的示例(以及更多描述)来自“任务和基于事件的异步模式(EAP)”)

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...