7

我正在尝试将使用回调的“经典”异步方法转换为 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是回调。

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

4

1 回答 1

11

如果您需要将异步回调包装到Tasks 中,那么您可以使用TaskCompletionSource<T>. MSDN 有完整的细节

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

LiveLoginResult result = await authClient.LoginAsync(new[] { "var1", "var2" });
于 2012-11-22T19:33:04.997 回答