Windows Phone 앱을 만들 때 앱을 시작할 때 xml을 앱의 설치 위치에 만든 다음 값으로 사용자 설정 클래스를 초기화하는 메서드를 호출합니다. in xml. 처음에는 xml이 이미 사용 가능한지 확인하고 그렇지 않은 경우 xml을 만듭니다 (존재하는 경우 xml이 읽히고 사용자 설정이 초기화 됨). 여기 HASHNOTESDOC 유형의하여 XDocument이다 App.xaml.cs를비동기 메서드가 완료 될 때까지 대기
var isCreateFileSuccessfull = CreateOrInitializeMainXml();
UserSettings.GetInstance().GetValuesFromXmlDoc(HASHNOTESDOC);
의 OnLaunched 이벤트에 코드입니다.
방법의 본문과 같습니다
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이 초기화 될 때까지 기다렸다가 사용자 설정 만 읽으면 어떻게됩니까?