LiveAuthClient InitializeAsync挂起

时间:2013-09-19 17:34:16

标签: c# live windows-store windows-live live-sdk

我在使用msdn

的演示时遇到问题

The demo

关于方法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安装的。

2 个答案:

答案 0 :(得分:1)

我预测你在调用堆栈的某个地方调用Task.WaitTask<T>.Result。正如我在博客中描述的那样,你是causing a deadlock,因为await正试图在UI线程上恢复。

正确的解决方案是使用await“一直”,这是我在my article中描述的最佳做法之一。如果您认为自己“无法”使用await,请查看我的async/OOP blog series,其中介绍了async代码的各种代码模式,最值得注意的是{{ 3}}和constructors

答案 1 :(得分:0)

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