Я создаю приложение для Windows-телефона, где при запуске приложения я создаю xml в месте установки приложения, а затем вызываю метод, который инициализирует класс пользовательских настроек со значениями в xml. В начале я проверяю, доступен ли xml, если это не так, я создаю xml, если он присутствует, он считывается и пользовательские настройки инициализируются. Вот код в OnLaunched случае App.xaml.csДождитесь завершения метода Async
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 имеет значение null. Как я могу подождать, пока HASHNOTESDOC будет инициализирован, и только затем перейдите и прочитайте настройки пользователя?