【问题标题】:LiveAuthClient.InitializeAsync() does never return on Windows PhoneLiveAuthClient.InitializeAsync() 永远不会在 Windows Phone 上返回
【发布时间】:2013-10-30 17:14:07
【问题描述】:

我正在尝试在 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)然后为了管理登录,如果客户端没有初始化就不能这样做。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 2011-07-25
      • 1970-01-01
      • 2012-10-02
      • 2013-02-18
      • 1970-01-01
      相关资源
      最近更新 更多