0

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)
                    ......

コードは htInitialuzeAsync()メソッドでハングし、try ステートメントに入ることはありません。ライブ SDK を使用したことがある人は、何が問題なのか教えてもらえますか? コードはデモから直接コピーして貼り付けたもので、ライブ SDK は VS2012 に NuGet 経由でインストールされています。

4

2 に答える 2

1

あなたが呼び出しているか、呼び出しスタックのさらに上のどこかであると予測しTask.WaitますTask<T>.Result。私のブログで説明しているように、が UI スレッドで再開しようとしているため、デッドロックが発生しています。await

正しい解決策は、await「ずっと」を使用することです。これは、私の記事で説明するベスト プラクティスの 1 つです。を「使えない」と思われる状況にある場合はawaitasync/OOP ブログ シリーズをご覧ください。コードのさまざまなコード パターン、async特にコンストラクタープロパティについて説明しています。

于 2013-09-19T17:41:04.007 に答える