FileIO.ReadTextAsync bleibt gelegentlich hängen

Ich experimentiere gerade mit WinRT und eine Demo-App, die ich erstelle, ist eine einfache App im "Editor" -Stil, die im lokalen Speicher geladen / gespeichert wird. Während ich mit dem richtigen vertraut binasync Ansatz zum Erstellen von WinRT-Apps, meine Demo-App verwendet eine synchroneLoad um die Dinge einfach zu halten.

Das Problem ist, dass bei einem Anruf anLoad, es funktioniert 2 aus 3 heraus und der Rest der Zeit hängt die APP am Anrufvar result = await FileIO.ReadTextAsync(storageFile);

public class ContentStorage : IContentStorage
{
    private const string FileName = "contents.txt";

    public string Load()
    {
        return LoadAsync().Result;
    }

    public void Save(string content)
    {
        SaveAsync(content);
    }

    private static async Task<string> LoadAsync()
    {
        var storageFile = await LocalFolder.GetFileAsync(FileName);
        var result = await FileIO.ReadTextAsync(storageFile);

        return result;
    }

    private static async void SaveAsync(string content)
    {
        var storageFile = await LocalFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting);

        FileIO.WriteTextAsync(storageFile, content);
    }

    private static StorageFolder LocalFolder
    {
        get { return ApplicationData.Current.LocalFolder; }
    }
}

Mache ich hier etwas außerordentlich Dummes?

FWIW, ich habe mit dem Ändern experimentiertLoad Wenn Sie nur jeden Schritt explizit blockieren, wird das Hängen auf 1 zu 20 verbessert, aber ich verstehe immer noch nicht, warum es überhaupt hängt ...

public string Load()
{
    var storageFile = LocalFolder.GetFileAsync(FileName).AsTask().Result;
    var result = FileIO.ReadTextAsync(storageFile).AsTask().Result;

    return result;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage