2017-04-13 11 views
0

私はXamarin.Formsアプリケーションを持っています。最初のステップでは、アプリケーションのユーザーは単純なContentPageであるログインページにログインする必要があります。ユーザーが正常にログインすると、MasterDetailPageが表示されます。Xamarin/Xamarin.Forms - MasterDetailPageを初期化するときにデッドロックが発生する?

私の問題は、このコード行がデッドロックを生成することです。したがって、このコード行は決して終わらないでしょう。

_masterPage.Master = _mainMenuPage;

private void SignInButtonClicked(string username, string password) 
    { 
     SignInAsync(username, password).ContinueWith(task => 
     { 
      if (task.Result) 
      { 
       _signInPage.StopActivityIndicator(); 

       _masterPage.Master = _mainMenuPage; 
       _masterPage.Detail = _masterNavigationPage; 
       MainPage = _masterPage; 
      } 

     }, System.Threading.CancellationToken.None, System.Threading.Tasks.TaskContinuationOptions.OnlyOnRanToCompletion, System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext()); 
    } 

SignInAsync:

private async System.Threading.Tasks.Task<bool> SignInAsync(string username, string password) 
    { 
     bool signedIn = true; 

     //ToDo SignIn logic 

     if (signedIn) 
     { 
      _mainMenuPage = new CPM.Arda.Mobile.Freelancer.Ui.Pages.MainMenu(this); 
      await _mainMenuPage.InitAsync(); 
      await _mainMenuPage.RefreshDataAsync(); 

      _mainMenuPage.MainMenuItemSelectedEvent += MainMenuItemSelected; 

      CPM.Arda.Mobile.Freelancer.Ui.Pages.General.Overview overviewPage = new CPM.Arda.Mobile.Freelancer.Ui.Pages.General.Overview(this); 
      await overviewPage.InitAsync(); 
      await overviewPage.RefreshDataAsync(); 

      _masterNavigationPage = new Xamarin.Forms.NavigationPage(overviewPage); 

      _masterPage = new CPM.Arda.Mobile.Freelancer.Ui.Pages.Master(this); 
      await _masterPage.InitAsync(); 
      await _masterPage.RefreshDataAsync(); 
     } 

     return signedIn; 
    } 

任意のアイデア

ここでは、全体の機能はありますか?私にとっては非常に奇妙なようです。

+0

'InitAsync'と' RefreshDataAsync'は何をしますか? –

+0

現時点では何もありません。将来の仕事のためのただの空の方法。 SignInAsyncは問題なく終了したため、SignInAsync内のコードは問題ではないと思います。 – OPunktSchmidt

+0

あなたが今必要でないものをコメントアウトし、何が起こるかを調べると、コードがハングする原因を正確に突き止めることができます。 –

答えて

1

解決策が見つかりました。 TitleプロパティをCPM.Arda.Mobile.Filelancer.Ui.Pages.MainMenu(MasterDetailPageからMasterPage)に設定するのを忘れてしまった。 Xamarin.Formsのよくある間違い。

例外なく、非常に見つけるのは難しいです。 Xamarinは時には役に立ちません:/

+0

これは既知の問題です:https://bugzilla.xamarin.com/show_bug .cgi?id = 54477 – Frankie

関連する問題