【发布时间】:2014-11-04 09:37:18
【问题描述】:
在我当前的项目中,我将某些对象的状态存储在 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,因为它尚未完全实例化。
我想在尝试与 Restaurant 交互之前,我必须等待方法完全执行,但这似乎也有点奇怪,因为它破坏了关于异步方法的整个想法。
【问题讨论】:
标签: c# xml wpf asynchronous