我正在尝试在 WP8 应用程序中管理 Live SDK 登录,但这里的代码有问题:
this.authClient = new LiveAuthClient("client Id");
LiveLoginResult loginResult = await this.authClient.InitializeAsync(scopes);
这是来自 Microsoft 提供的示例 ( Sample ) 的代码。但是 authClient.InitializeAsync(scopes) 永远不会返回,我也没有得到任何异常。 MSDN 声明 ( LiveAuthClient.InitializeAsync() ) 此方法不会在 Windows Phone 上返回值。然后我想使用
this.authClient.LoginAsync(scopes)
来管理登录,如果客户端没有初始化就不能这样做。 最佳答案
我预测您正在调用 Task<T>.Result
或 Task.Wait
进一步调用堆栈,这将是 cause a deadlock (正如我在我的博客中解释的那样)。
默认情况下,await
将捕获“当前上下文”(在这种情况下,可能是 UI 上下文),并将使用该上下文恢复 async
方法的执行。如果您通过对该任务调用 Result
或 Wait
来阻止 UI 线程,那么 async
方法将无法完成,因为它试图在被阻止的 UI 线程上完成。
关于c# - LiveAuthClient.InitializeAsync() 永远不会在 Windows Phone 上返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18831673/