2017-04-14 54 views
0

我正在構建一個Xamarin表單應用程序,並且狀態欄(iOS)中的網絡活動微調控制器存在問題,將繼續永久旋轉。以下是我用來顯示加載屏幕的代碼。我希望查看被加載,但是網絡 -網絡活動微調永遠旋轉

protected override void OnAppearing() 
    { 
     base.OnAppearing(); 

     viewModel.ConfigureCampaignCommand.Execute(null); 
    } 

的邏輯是罰款:

public Command ConfigureCampaignCommand 
    { 
     get 
     { 
      return configureCampaignCommand ?? (configureCampaignCommand = new Command(async() => await ExecuteConfigureCampaignCommand(),() => { return !IsBusy; })); 
     } 
    } 

這是從OnAppearing稱爲:

private async Task ExecuteConfigureCampaignCommand() 
    { 
     if (IsBusy) 
     { 
      return; 
     } 

     IsBusy = true; 
     //ConfigureCampaignCommand.ChangeCanExecute(); 
     bool showAlert = false; 
     string campaign = null; 

     try 
     { 
      campaign = CrossSecureStorage.Current.GetValue(SettingNames.Campaign); 

      if (!String.IsNullOrEmpty(campaign)) 
      { 
       StatusMessage = "Blah"; 
       OnPropertyChanged("StatusMessage"); 

       await Task.Delay(1000); 

       StatusMessage = "Blah"; 
       OnPropertyChanged("StatusMessage"); 

       await Task.Delay(700); 

       StatusMessage = "Blah"; 
       OnPropertyChanged("StatusMessage"); 

       await Task.Delay(500); 

       MessagingService.Current.SendMessage<string>(SettingNames.NavigationSales, campaign); 
      } 
     } 
     catch (Exception e) 
     { 
      var abc = e; 
      showAlert = true; 
     } 
     finally 
     { 
      IsBusy = false; 
      //ConfigureCampaignCommand.ChangeCanExecute(); 
     } 

     if (showAlert) 
     { 
      await page.DisplayAlert("Uh Oh :(", "Unable to load campaign.", "OK"); 
     } 
    } 

這是從一個命令調用活動微調持續旋轉。如果我添加1秒延遲:

   Device.StartTimer(TimeSpan.FromMilliseconds(1),() => 
       { 
        MessagingService.Current.SendMessage<string>(SettingNames.NavigationSales, campaign); 

        return false; 
       }); 

一旦加載新視圖,微調器就會停止。如果我刪除await Task.Delay,則加載視圖時微調停止,但加載消息對用戶不可見。

我的問題是,爲什麼網絡微調器繼續?

回答

0

只要更改IsBusy

OnPropertyChanged("IsBusy"); 

當你調用此您的其他屬性,但不是IsBusy我想,這大概是變化沒有得到回升的原因。

+0

我正在使用MVVM Helper庫,它定義了IsBusy並調用OnPropertyChange(「IsBusy」) – markpirvine

+0

ExecuteConfigureCampaignCommand是否在UI線程上分派? – bradgonesurfing

+0

我假設我們在談論這個屬性https://developer.xamarin.com/api/property/Xamarin.Forms.Page.IsBusy/ – bradgonesurfing