Xamarin和UWP - 异步文件打开的重点是什么?

时间:2016-12-19 16:49:55

标签: c# asynchronous xamarin xamarin.forms

我有一个Xamarin.Forms解决方案,它在UWP项目中具有持久性。现在,对于UWP,文件读取操作是异步的,这导致我的程序在异步文件读取完成之前刷新自身。基本上我有一个public async Task<CustomTable> Load(Level level)来将级别信息读入CustomTable。所以当我用新的关卡信息更新我的模型时:

_model.NewGame();
_Size = _model.Size;

其中NewGame()最终调用以从文件中读取级别信息:

public async void NewGame()
{
...
_table = await _fileAccess.Load(_level);
....
}

现在我知道了,我不应该创建一个无效的异步函数,但是文件加载是异步的,所以我也必须使NewGame()异步。但是,如果我这样做,我最终不得不做出默认的protected override void OnStart()异步,我很确定不是那样的。有什么办法可以不异步读取文件吗?使文件操作异步的重点是什么?

2 个答案:

答案 0 :(得分:3)

  

导致我的程序在异步文件读完成之前刷新自己

是。这是完全正常的。

您需要设计应用在加载时的样子,同步初始化为“加载”状态,启动异步文件读取(s)你的创业公司。

当文件读完后,您需要使用该数据更新您应用的视图。

我有NotifyTask<T> type可能有助于此。

答案 1 :(得分:1)

任何类型的IO都需要时间,并且可能被其他操作阻止。您不希望在等待IO操作完成时阻止您的应用程序,因此使文件IO操作异步有帮助。