在我當前的項目中,我將某些對象的狀態存儲在XML文件中。由於我在WPF項目中工作,我需要使用異步方法來完成此操作。使同步代碼取決於異步代碼
因此,我在加載我的應用程序時遇到問題。我是從XML文件重新創建這些對象的狀態,這將不得不做異步,但我的內容取決於這些對象的狀態,在我的情況下,導致對象在我之前沒有完全實例化與他們合作。
簡而言之:我的同步方法取決於啓動我的應用程序時實例化我的對象的異步方法。
下面是一段代碼,顯示了我如何閱讀整個文件夾的xml文件並生成對象列表。
public List<Restaurant> restaurant = new List<Restaurant>();
public async void ReadRestaurantAsync()
{
IStorageFolder filesFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("folder");
var storageFiles = await filesFolder.GetFilesAsync();
foreach (var storageFile in storageFiles)
{
using (IRandomAccessStream stream = await storageFile.OpenAsync(FileAccessMode.Read))
using (Stream inputStream = stream.AsStreamForRead())
{
DataContractSerializer serializer = new DataContractSerializer(typeof (Restaurant));
Restaurant objectRead = serializer.ReadObject(inputStream) as Restaurant;
restaurant.Add(objectRead);
}
}
}
現在,當我從我的調用的MainPage這個異步方法,我不能與對象餐廳的工作,因爲它並沒有被完全實例化。
我猜想在嘗試與Restaurant進行交互之前,我將不得不等待該方法完全執行,但這似乎也有點奇怪,因爲它毀掉了關於異步方法的整個想法。
謝謝!很好的解釋。 – Mathias 2014-11-04 09:56:24