我正在尝试将使用回调的“经典”异步方法转换为异步/等待方法。
这是代码:
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 的交互使用回调。我正在考虑使用信号量的解决方案,以免改变我的逻辑。那可能是个不错的选择?
最佳答案
如果需要将异步回调包装成Task
s,那么你可以使用TaskCompletionSource<T>
. MSDN has the full details .
但是,在您的情况下,您可以只使用 LoginAsync
没有 UserState
参数:
LiveLoginResult result = await authClient.LoginAsync(new[] { "var1", "var2" });
关于c# - 转换/包装一个使用回调的 "classic"异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514634/