LiveAuthClient.InitializeAsync()永远不会在Windows Phone上返回

时间:2013-09-16 15:23:38

标签: c# windows-phone-8 async-await live-sdk

我正在尝试在WP8应用中管理Live SDK登录,并在此处遇到此代码的问题:

this.authClient = new LiveAuthClient("client Id");
LiveLoginResult loginResult = await this.authClient.InitializeAsync(scopes);

这是Microsoft提供的示例中的代码(Sample)。但是authClient.InitializeAsync(范围)永远不会返回,我也没有任何异常。 MSDN声明(LiveAuthClient.InitializeAsync())此方法不会在Windows Phone上返回值。我想使用this.authClient.LoginAsync(scopes)然后管理登录,如果客户端没有初始化则不能这样做。

1 个答案:

答案 0 :(得分:6)

我预测您正在调用Task<T>.ResultTask.Wait进一步调用您的调用堆栈,这将cause a deadlock(正如我在博客中解释的那样)。

默认情况下,await将捕获“当前上下文”(在这种情况下,可能是UI上下文),并将使用该上下文来恢复async方法的执行。如果通过在该任务上调用ResultWait来阻止UI线程,则async方法无法完成,因为它正在尝试在被阻止的UI线程上完成。