2017-10-08 71 views
1

在Xamarin窗體中,導航方法如PushAsync是異步Task的返回方法,但是看起來在調用它時是否使用await沒有什麼區別,是嗎?我應該等待這些電話嗎?等待導航pushasync?

另一個問題,navigation guide說模型頁面用於導航到需要完成自包含任務之前關閉它的頁面,但它看起來沒有區別pushasync和pushmodelasync除了模型頁面沒有導航欄,用戶仍然可以像使用pushasync一樣使用操作系統後退按鈕,是嗎?

回答

3

awating的常見考慮適用於此處。如果你沒有await PushAsync,然後在你的代碼中執行另一個動作(或者你的框架執行了另一個你可能不知道的動作) - 這些動作可能在PushAsync完成之前執行(即 - 在頁面呈現之前用戶)。另外,如果在PushAsync操作中存在一些異常 - 如果您不等待該呼叫,則不會注意到它。一般來說,即使你在PushAsync之後沒有做任何事情 - 除非你知道你爲什麼不想這麼做,最好等待這個調用(就像大多數其他的異步操作一樣)。

至於第二個問題,你的鏈接提供了答案:

在Android和Windows Phone,用戶可以通過按下設備上的標準後退按鈕隨時返回 前一頁。如果 模式頁面要求用戶在離開頁面之前完成自包含任務 ,則應用程序必須禁用「後退」按鈕。 這可以通過覆蓋模式頁面上的Page.OnBackButtonPressed 方法來實現。欲瞭解更多信息,請參閱 Charles Petzold的Xamarin.Forms書的第24章。

+0

我有一個for循環的例子,在await之後,即使await和完成之前仍然執行它。我有這個等待Navigation.PushAsync(mypage,true);並在我有一個for循環後。如何在任務完成後執行for循環? – user3841581