OnAppearing 中的等待是否意味着我正在导航到的屏幕将立即显示?

Ala*_*an2 10 xamarin xamarin.forms

如果我有这个代码:

    protected override async void OnAppearing()
    {
        base.OnAppearing();
        await DoLengthDatabaseTaskAsync(); // takes 30 seconds
    }
Run Code Online (Sandbox Code Playgroud)

它是一个异步任务,这是否意味着屏幕会很快出现并且不等待数据库任务完成?

    protected override async void OnAppearing()
    {
        base.OnAppearing();
        await CallAndForgetAboutOutputTaskAsync(); // takes 30 seconds
    }
Run Code Online (Sandbox Code Playgroud)

如果我不担心“调用后忘记”CallAndForgetAboutOutputTaskAsync() 方法的完成情况,怎么样?

有没有办法可以在后台运行 CallAndForgetAboutOutputTaskAsync() 以便屏幕尽快出现

Iva*_*čin 5

是和不是。

OnAppearing表示该页面已出现在屏幕上,并且此后立即执行。因此,在那里执行某些操作不会减慢任何事情。

但是,您应该记住,它OnAppearing是在 UI 线程上执行的,并且根据您的结构CallAndForgetAboutOutputTaskAsync(),它可能会冻结您的 UI,但简单的魔法可以Task.Run解决问题。

编辑:所以它应该是这样的:

Task CallAndForget()
{
  return Task.Run(async() => await action());
}
Run Code Online (Sandbox Code Playgroud)