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() 以便屏幕尽快出现
是和不是。
OnAppearing
表示该页面已出现在屏幕上,并且此后立即执行。因此,在那里执行某些操作不会减慢任何事情。
但是,您应该记住,它OnAppearing
是在 UI 线程上执行的,并且根据您的结构CallAndForgetAboutOutputTaskAsync()
,它可能会冻结您的 UI,但简单的魔法可以Task.Run
解决问题。
编辑:所以它应该是这样的:
Task CallAndForget()
{
return Task.Run(async() => await action());
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2519 次 |
最近记录: |