我在使用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安装的。
答案 0 :(得分:1)
我预测你在调用堆栈的某个地方调用Task.Wait
或Task<T>.Result
。正如我在博客中描述的那样,你是causing a deadlock,因为await
正试图在UI线程上恢复。
正确的解决方案是使用await
“一直”,这是我在my article中描述的最佳做法之一。如果您认为自己“无法”使用await
,请查看我的async
/OOP blog series,其中介绍了async
代码的各种代码模式,最值得注意的是{{ 3}}和constructors。
答案 1 :(得分:0)
似乎您必须将您的应用与商店关联才能使用此功能,否则它会挂起。关联后,一切都开始有效了。