Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin等待PushAsync行为_C#_Xamarin_Async Await_Navigation - Fatal编程技术网

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设置断点并在调试模式下运行应用程序