Pur*_*ome 8 c# asynchronous async-await xamarin.forms
当我的应用程序首次启动时,我需要加载一些以前保存的数据.如果它存在 - >然后转到TabbedPage页面.否则,登录页面.
我不确定如何在应用程序的ctor中调用我的异步方法,甚至在另一种方法中?
我怎样才能做到这一点?
这是我的代码..
namespace Foo
{
public class App : Application
{
public App()
{
Page page;
LoadStorageDataAsync(); // TODO: HALP!
if (Account != null)
{
// Lets show the dashboard.
page = new DashboardPage();
}
else
{
// We need to login to figure out who we are.
page = CreateAuthenticationPage();
}
MainPage = page;
}
... snip ...
}
Run Code Online (Sandbox Code Playgroud)
那为什么是LoadStorageDataAsync异步?因为它使用的是库PCLStorage而且都是异步的.
有人可以帮忙吗?
Yuv*_*kov 10
就文档而言,Application.OnStart您可以覆盖以下事件:
应用程序开发人员覆盖此方法以在应用程序启动时执行操作
您可以async在那里执行您可以实际等待的方法:
public override async void OnStart()
{
await LoadStorageDataAsync();
}
Run Code Online (Sandbox Code Playgroud)
退后一步,考虑一下UI的工作原理.当您的应用程序最初显示时,框架会构建您的ViewModel和View,然后它会立即(尽快)显示.这是一个不适合网络活动的地方.
相反,您应该做的是启动异步操作,然后(同步)加载并显示"加载"页面.异步操作完成后,您可以转换到其他页面(如果用户没有网络访问权限,则转换为"错误"页面).
我不确定Xamarin Forms是否能够将数据绑定到页面对象,但如果是,那么我的NotifyTaskCompletion类型可能会有所帮助.
| 归档时间: |
|
| 查看次数: |
10698 次 |
| 最近记录: |