c# – 将基于事件的模式转换为异步CTP模式
发布时间:2020-12-15 18:08:42 所属栏目:百科 来源:网络整理
导读:_fbClient.GetCompleted += new EventHandlerFacebookApiEventArgs(OnFetchPageNotification); _fbClient.GetAsync(_kNotificationPath,new Dictionarystring,object { { "access_token",_kPageAccessToken } }); 如何将上面的代码转换为wp7中的等待代码: o
_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)”) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |