我想讀的資產中的文件到流,我目前使用它,如下所示:讀入文件到流中的Windows應用商店的應用程序,而無需使用異步/等待
public async void LoadWidthOfUnicodesData()
{
string dataFile = @"Assets\QuranData\Data_Font1.xml";
StorageFolder InstallationFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFile file = await InstallationFolder.GetFileAsync(dataFile);
Stream readStream = await file.OpenStreamForReadAsync();
DataContractSerializer ser = new DataContractSerializer(typeof(List<UniCodeWidth>));
WidthOfUnicodes = (List<UniCodeWidth>)ser.ReadObject(readStream);
for (int i = 0; i < WidthOfUnicodes.Count; i++)
{
WidthOfUnicodesDict.Add(WidthOfUnicodes[i].UniCode, WidthOfUnicodes[i].Width);
}
}
與唯一的問題,那部分是在我的viewmodel中,並且因爲它是一個非阻塞操作,所以當VM以View作爲它的DataContext初始化時,構造函數完成它應該做的事來填充視圖,但我總是在使用WidthOfUnicodesDict
,因爲它尚未填充數據。
我想要做的是讓閱讀流到一個同步方法(不使用async/await)到目前爲止我不知道如何在windows store上做到這一點。或者以某種方式使VM構造函數等待,直到此操作完成並通知它已完成。
查看[Stephen Cleary關於'async'和構造函數的文章](http://blog.stephencleary.com/2013/01/async-oop-2-constructors.html)。 – svick
如果正在讀取文件,這是一個阻止操作。 –