我正在尝试在 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>.ResultTask.Wait 进一步调用堆栈,这将是 cause a deadlock (正如我在我的博客中解释的那样)。

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

关于c# - LiveAuthClient.InitializeAsync() 永远不会在 Windows Phone 上返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18831673/

10-12 02:48