Asynchrone Eigenschaft in c #
In meiner Windows 8-Anwendung gibt es eineglobal Klasse, in der es ein paar statische Eigenschaften gibt, wie:
public class EnvironmentEx
{
public static User CurrentUser { get; set; }
//and some other static properties
//notice this one
public static StorageFolder AppRootFolder
{
get
{
return KnownFolders.DocumentsLibrary
.CreateFolderAsync("theApp", CreationCollisionOption.OpenIfExists)
.GetResults();
}
}
}
Sie können sehen, dass ich den Anwendungsstammordner an einer anderen Stelle im Projekt verwenden möchte, sodass ich ihn zu einer statischen Eigenschaft mache. Im Getter muss ich sicherstellen, dass der Stammordner vorhanden ist, andernfalls muss er erstellt werden. Aber dieCreateFolderAsync
ist eine asynchrone Methode, hier brauche ich eine synchronisierte Operation. Ich habe es versuchtGetResults()
aber es wirft einInvalidOperationException
. Was ist die korrekte Implementierung? (Das package.appmanifest ist richtig konfiguriert, der Ordner wird tatsächlich erstellt.)