Navigation 为什么push async不能以Xamarin形式立即返回

Navigation 为什么push async不能以Xamarin形式立即返回,navigation,xamarin.forms,Navigation,Xamarin.forms,我认为PushAsync应该在调用后立即返回任务(我想在新布局出现时执行几个操作)。但是对于这个代码 Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Task task = Navigation.PushAsync(newRoot); Debug.WriteLine(stopwatch.ElapsedMilliseconds + " ms"); // 1000 ms await task; Debug.WriteLine(sto

我认为PushAsync应该在调用后立即返回任务(我想在新布局出现时执行几个操作)。但是对于这个代码

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
Task task = Navigation.PushAsync(newRoot);
Debug.WriteLine(stopwatch.ElapsedMilliseconds + " ms"); // 1000 ms
await task;
Debug.WriteLine(stopwatch.ElapsedMilliseconds + " ms");// 1500 ms
stopwatch.Stop();  
第一条writeline显示大约1秒,第二条writeline在第一条之后0.5秒调用。如何改进PushAsync,使其立即返回?
感谢您,PushAsync是一种异步方法,这意味着它在后台执行任务,从而不会阻塞应用程序和任何其他资源


如果需要即时响应,则需要使用同步方法而不是异步方法。

我有几个应用程序使用NavigationPage,从未见过请求导航需要一秒钟的时间。你没有钩住PushRequested或PushEvents,是吗?这些都是同步调用的,如果处理程序中有复杂的代码,则很容易注入延迟。

首先,推送没有任何同步方法。第二,同步方法在任何情况下都不会立即返回,而是在所有工作完成时返回(例如,在1.5秒后)。我同意你的说法,但由于任务是异步的,它总是在后台运行,这比任何前台任务的优先级都低。我想你要加快响应速度,你需要减少前台活动,使后台活动能够更快地运行?也许,我的问题不清楚。1.5秒渲染页面对我来说是正常的。但是为什么后台操作(PushAsync)在主线程中工作1秒呢?不,我没有钩住这个事件。如我所见,例如OnSizeAllocated的基本实现延迟450毫秒。因此,如果我有一个复杂的页面,xamarin在主线程中形成构建布局