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" }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |