C#(Xamarin)从重写的框架调用中触发并忘记

C#(Xamarin)从重写的框架调用中触发并忘记,c#,exception,xamarin,async-await,C#,Exception,Xamarin,Async Await,我有一个从远程服务器检索信息并向用户显示该信息的屏幕。我希望在屏幕显示时更新此信息(不需要额外的用户交互) 我最终得到的代码如下所示: protected override void OnAppearing() { base.OnAppearing(); Task task = UpdateField(); } protected async Task UpdateField() { try { MyLabel.Text = (await GoGetTheData ())

我有一个从远程服务器检索信息并向用户显示该信息的屏幕。我希望在屏幕显示时更新此信息(不需要额外的用户交互)

我最终得到的代码如下所示:

protected override void OnAppearing()
{
    base.OnAppearing();
    Task task = UpdateField();
}
protected async Task UpdateField()
{
    try { MyLabel.Text = (await GoGetTheData ()).Stuff; }
    catch(Exception ) { MyLabel.Text = "Nope"; }
}

在这种情况下,由于我正在UpdateField()中捕获所有异常,将任务存储到局部变量中然后忽略它是否有任何不利/危险?

它仍然存在(基于您的其他Q-)非常令人困惑的是,为什么您认为必须返回
任务
——标准模式是
async void
。关于“async void”的坏处以及引发异常导致应用程序崩溃的问题,有很多讨论,我试图从一般原则上避免它。在这种情况下,async/await不像执行Task.Run()那么容易阅读。如果返回值对您没有任何意义,您也可以这样做:
Task\uuz=UpdateField()应该像调用任务一样简单。运行(任务名)
,在出现的
中执行一个“点火并忘记”任务。如果您需要
任务
的结果,那么您将
等待
调用以返回该
任务
。按照当前编写代码的方式,您不会从点击模式中获益,因为在“等待”(您的任务)时没有其他操作要执行。