加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 转换/包装使用回调的“经典”异步方法

发布时间:2020-12-15 17:14:54 所属栏目:百科 来源:网络整理
导读:我试图将使用回调的“经典”异步方法转换为async / await方法. 这是代码: authClient.LoginCompleted += authClient_LoginCompleted;authClient.LoginAsync(new Liststring() { "var1","var2" },data);static void authClient_LoginCompleted(object sender
我试图将使用回调的“经典”异步方法转换为async / await方法.

这是代码:

authClient.LoginCompleted += authClient_LoginCompleted;
authClient.LoginAsync(new List<string>() { "var1","var2" },data);

static void authClient_LoginCompleted(object sender,LoginCompletedEventArgs e)
{ ... }

其中“data”是UserState,而authClient_LoginCompleted是回调.

我已经有了async / await方法的逻辑,问题是windows phone与Microsoft.Live的交互使用了回调.我正在考虑使用信号量的解决方案,以免改变我的逻辑.那可能是个不错的选择?

解决方法

如果需要将异步回调包装到Tasks中,则可以使用TaskCompletionSource< T>. MSDN has the full details.

但是,在您的情况下,您可以使用不带UserState参数的LoginAsync:

LiveLoginResult result = await authClient.LoginAsync(new[] { "var1","var2" });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读