Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin和UWP-What';异步文件打开的目的是什么?_C#_Asynchronous_Xamarin_Xamarin.forms - Fatal编程技术网

C# Xamarin和UWP-What';异步文件打开的目的是什么?

C# Xamarin和UWP-What';异步文件打开的目的是什么?,c#,asynchronous,xamarin,xamarin.forms,C#,Asynchronous,Xamarin,Xamarin.forms,我有一个Xamarin.Forms解决方案,它在UWP项目中具有持久性。现在,对于UWP,文件读取操作是异步的,这会导致我的程序在异步文件读取完成之前刷新自己。基本上,我有一个公共异步任务加载(Level-Level)来将级别信息读入自定义表。因此,当我使用新级别信息更新模型时: _model.NewGame(); _Size = _model.Size; 其中NewGame()最终调用从文件读取关卡信息: public async void NewGame() { ... _table =

我有一个Xamarin.Forms解决方案,它在UWP项目中具有持久性。现在,对于UWP,文件读取操作是异步的,这会导致我的程序在异步文件读取完成之前刷新自己。基本上,我有一个
公共异步任务加载(Level-Level)
来将级别信息读入
自定义表
。因此,当我使用新级别信息更新模型时:

_model.NewGame();
_Size = _model.Size;
其中
NewGame()
最终调用从文件读取关卡信息:

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

现在我知道了,我不应该创建void async函数,但是文件加载是异步的,所以我也必须创建
NewGame()
async。但是如果我这样做,我最终不得不使默认的
protectedoverride void OnStart()
async变为异步,我很确定这不是一个好办法。有没有办法不异步读取文件?使文件操作异步有什么意义?

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

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

这会导致我的程序在异步文件读取完成之前刷新自身

对。这是完全正常的

你需要设计你的应用程序在加载时的样子,同步初始化到“加载”状态,并在启动时启动异步文件读取

文件读取完成后,您需要使用该数据更新应用程序的视图

我有一个能帮上忙的方法

这会导致我的程序在异步文件读取完成之前刷新自身

对。这是完全正常的

你需要设计你的应用程序在加载时的样子,同步初始化到“加载”状态,并在启动时启动异步文件读取

文件读取完成后,您需要使用该数据更新应用程序的视图

我有一个能帮上忙的方法