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,則加載視圖時微調停止,但加載消息對用戶不可見。
我的問題是,爲什麼網絡微調器繼續?
我正在使用MVVM Helper庫,它定義了IsBusy並調用OnPropertyChange(「IsBusy」) – markpirvine
ExecuteConfigureCampaignCommand是否在UI線程上分派? – bradgonesurfing
我假設我們在談論這個屬性https://developer.xamarin.com/api/property/Xamarin.Forms.Page.IsBusy/ – bradgonesurfing