为什么推送异步不会立即在Xamarin Forms中返回

时间:2014-12-09 09:11:23

标签: navigation xamarin.forms

我认为PushAsync应该在调用后立即返回Task(我想在新布局出现时进行多次操作)。但对于这段代码

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();  
第一个写作线显示约1秒,第二个写作线在第一个后0.5秒调用。如何改进PushAsync以便立即返回? 感谢

2 个答案:

答案 0 :(得分:1)

PushAsync是一种异步方法,这意味着它在后台执行任务,因此不会占用应用程序并阻止任何其他资源。

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

答案 1 :(得分:0)

我有几个使用NavigationPage的应用程序,从未见过需要一秒钟才能请求导航。你碰巧没有勾住PushRequested或Pushed事件,对吗?这些是同步调用的,如果你的处理程序中有复杂的代码,很容易注入延迟。