我正在创建一个Windows Phone应用程序,在启动应用程序时,我会在应用程序的安装位置创建一个XML文件,然后调用一个方法,该方法使用XML中的值初始化用户设置类。一开始,我会检查XML是否已经存在,如果不存在,我会创建一个XML,如果存在,则会读取XML并初始化用户设置。以下是App.xaml.cs中OnLaunched事件中的代码:
var isCreateFileSuccessfull = CreateOrInitializeMainXml();
UserSettings.GetInstance().GetValuesFromXmlDoc(HASHNOTESDOC);
其中HASHNOTESDOC是XDocument类型。
方法的主体如下:
async private void CreateOrInitializeMainXml()
{
try
{
StorageFolder InstallationFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
string hashnotesFile = @"Assets\hashnotes.xml";
StorageFile file = await InstallationFolder.GetFileAsync("hashnotes.xml");
bool fileExists = await FileExists(InstallationFolder, "hashnotes.xml");
if (!fileExists)
{
await file.CopyAsync(InstallationFolder);
}
StorageFile hashNoteXml = await InstallationFolder.GetFileAsync(hashnotesFile);
Stream hashNotesStream = await hashNoteXml.OpenStreamForWriteAsync();
hashNotesXDocument = XDocument.Load(hashNotesStream);
hashNotesXDocument.Save(hashNotesStream);
}
catch
{
}
}
问题是,由于上述方法是异步方法,即使它还没有完成,控制权也会尝试执行该行。
UserSettings.GetInstance().GetValuesFromXmlDoc(HASHNOTESDOC);
在这个时候,HASHNOTESDOC是空的。我该如何等待,直到HASHNOTESDOC被初始化,然后再去读取用户设置?