2015-04-05 64 views
0

我正在使用Azure移动服务创建Xamarin.Forms应用程序。目前,我做这样的事情: -尝试在调试器中不执行任何操作而退出块

App.cs

public const string applicationURL = @"myUrl"; 
public const string applicationKey = @"myKey"; 
public static MobileServiceClient client = new MobileServiceClient(applicationURL, applicationKey); 

MainPage.cs

public MainViewModel ViewModel 
{ 
    get { return this.BindingContext as MainViewModel ; } 
    set { this.BindingContext = value; } 
} 

public MainPage() 
{ 
    InitializeComponent(); 

    this.ViewModel = new MainViewModel (App.client);} 

MainViewModel.cs

public MainViewModel(MobileServiceClient client) : this() 
{ 
    this.client = client; 
    LoadItemsCommand.Execute(null); 
} 

public ObservableCollection<MainModel> mainDetails{ get; set; } 


private Command loadItemsCommand; 
/// <summary> 
/// Command to load/refresh items 
/// </summary> 
public Command LoadItemsCommand 
{ 
    get { return loadItemsCommand ?? (loadItemsCommand = new Command(async() => await ExecuteLoadItemsCommand())); } 
} 

private async Task ExecuteLoadItemsCommand() 
{ 
    if (IsLoading) 
     return; 

    IsLoading = true; 

    try 
    { 
     var details= await client.GetTable<MainModel>().ToListAsync(); 

     MainDetails.Clear(); 
     foreach (var mDetails in details) 
     { 
      MainDetails.Add(mDetails); 
     } 
    } 
    catch (Exception ex) 
    { 
     var page = new ContentPage(); 
     var result = page.DisplayAlert("Error", "Error loading data. Please check connectivity and try again.", "OK", null); 
    } 

       IsLoading = false; 
} 

当我的调试器到达的尝试阻止在MainviewModel.cs中,它突然退出而没有做任何事情。它甚至不会去Catch区块。有什么我做错了吗?我怎样才能找出造成这个问题的原因?

+0

这是什么类型的应用程序? WP8? – 2015-04-05 03:00:59

+0

@JohnSaunders这是一个Xamarin表单应用程序 – user3034944 2015-04-05 05:55:15

回答

2

当我的调试器到达MainviewModel.cs中的Try块时,它突然退出而没有做任何事情。

这是由于异步方法的性质,它们一旦命中第一个await就会使控制回到调用方法。这是一个预期的行为。在等待之后,只需在线上设置一个断点,一旦异步操作完成,就会看到它到达它。

相关问题