C# Xamarin等待PushAsync行为
假设我有以下代码:C# Xamarin等待PushAsync行为,c#,xamarin,async-await,navigation,C#,Xamarin,Async Await,Navigation,假设我有以下代码: try { await ((MasterDetailPage)Application.Current.MainPage). Detail.Navigation.PushAsync(new SecondPage()); } finally { Console.WriteLine("Completed"); } 当输出“完成”时,第二页是否仅被推送到导航堆栈,或者它已被推送到导航堆栈,并且其内容也已加载?换句话说,“wait PushAsync”等待加载
try
{
await ((MasterDetailPage)Application.Current.MainPage).
Detail.Navigation.PushAsync(new SecondPage());
}
finally
{
Console.WriteLine("Completed");
}
当输出“完成”时,第二页是否仅被推送到导航堆栈,或者它已被推送到导航堆栈,并且其内容也已加载?换句话说,“wait PushAsync”等待加载整个页面或只等待推送?您可以做一个简单的测试来找出顺序: 在页面中:
private async void Button_Clicked(object sender, EventArgs e)
{
try
{
await Navigation.PushAsync(new Page1());
}
finally
{
Console.WriteLine("Completed");
}
}
在第1页:
public partial class Page1 : ContentPage
{
public Page1()
{
InitializeComponent();
Console.WriteLine("Page1" + "Construction");
}
protected override void OnAppearing()
{
base.OnAppearing();
Console.WriteLine("Page1" + "OnAppearing");
}
}
结果是:
因此,当输出
Completed
时,页面在你的应用程序中是可见的,你可以在OnAppearing
或Construction
方法中加载数据。你可以做一个简单的测试来找出顺序:
在页面中:
private async void Button_Clicked(object sender, EventArgs e)
{
try
{
await Navigation.PushAsync(new Page1());
}
finally
{
Console.WriteLine("Completed");
}
}
在第1页:
public partial class Page1 : ContentPage
{
public Page1()
{
InitializeComponent();
Console.WriteLine("Page1" + "Construction");
}
protected override void OnAppearing()
{
base.OnAppearing();
Console.WriteLine("Page1" + "OnAppearing");
}
}
结果是:
因此,当输出Completed
时,页面在应用程序中是可见的
,您可以在OnAppearing
或Construction
方法中加载数据。在WriteLine设置断点并在调试模式下运行应用程序在WriteLine设置断点并在调试模式下运行应用程序