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

前端之家收集整理的这篇文章主要介绍了c# – 转换/包装使用回调的“经典”异步方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图将使用回调的“经典”异步方法转换为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" });
原文链接:https://www.f2er.com/csharp/100564.html

猜你在找的C#相关文章