LiveAuthClient InitializeAsync hangs

本文关键字:hangs InitializeAsync LiveAuthClient | 更新日期: 2023-09-27 18:31:57

我在使用msdn的演示时遇到问题

演示

关于方法updateUserName

public static async Task updateUserName(TextBlock userName, Boolean signIn)
        {
            try
            {
                // Open Live Connect SDK client.
                LiveAuthClient LCAuth = new LiveAuthClient();
                LiveLoginResult LCLoginResult = await LCAuth.InitializeAsync();
                try
                {
                    //this is never reached
                    LiveLoginResult loginResult = null;
                    if (signIn)
                    ......

代码在 HT InitialuzeAsync() 方法上挂起,并且从不输入 try 语句。使用过实时SDK的人可以告诉我可能出了什么问题吗?该代码是演示中的直接复制粘贴,实时SDK是通过VS2012上的NuGet安装的。

LiveAuthClient InitializeAsync hangs

我预测您正在调用Task.WaitTask<T>.Result调用堆栈的更远的地方。正如我在博客上描述的那样,您正在导致死锁,因为await正在尝试在 UI 线程上恢复。

正确的解决方案是"一路"使用await,这是我在文章中描述的最佳实践之一。如果您认为"不能"使用await的情况,请查看我的 async/OOP 博客系列,其中描述了async代码的各种代码模式,最著名的是构造函数和属性。

似乎您必须将应用与应用商店关联才能使用此功能,否则它将挂起。关联后,一切都开始工作。