Bet*_*ker 3 c# asynchronous async-await xamarin
我有一个屏幕,可以从远程服务器检索信息并将该信息显示给用户.我希望在显示屏幕时更新此信息(无需其他用户交互).
public partial class MyPage : ContentPage
{
protected override async void OnAppearing()
{
base.OnAppearing();
try
{
MyLabel.Text = (await GoGetTheData ()).Stuff;
}
catch (Exception e)
{
MyLabel.Text = "Narg";
}
}
}
Run Code Online (Sandbox Code Playgroud)
这可以接受吗?我已经看到了关于"异步void"的邪恶的所有讨论,以及它应该如何仅在事件处理程序中使用,而且这不是一个事件处理程序.
在这种情况下,框架是否保证正常,因为我(1)在获得所有异步之前调用了base.OnAppearing(),并且(2)捕获了我的异常?
这是可以接受的.由于某种原因,添加了对这些框架覆盖的异步支持.一般来说,存在"异步无效"的弊端,但这种情况并不适用.
但需要注意的是,您应该尽快确保您的OnAppearing(Forms)
,OnCreate(Android)
和ViewDidLoad(iOS)
方法返回,以便您的用户获得愉快的体验.
实际上,您将在大量的Forms示例中看到这种确切的语法:https://github.com/xamarin/xamarin-forms-samples/search?utf8 =% E2%9C%93 &q = async+void + OnAppearing
归档时间: |
|
查看次数: |
1878 次 |
最近记录: |