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

Lum*_*lum 3 c# async-await windows-phone-8 live-sdk

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

this.authClient = new LiveAuthClient("client Id");
LiveLoginResult loginResult = await this.authClient.InitializeAsync(scopes);
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*ary 6

我预测你正在调用Task<T>.ResultTask.Wait进一步调用你的调用堆栈,这将导致死锁(正如我在我的博客上解释的那样).

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