0

毎回このエラーをスローするわけではありません。それが奇妙です。50%の確率でうまくいきます。

これが save メソッドを呼び出す方法です

private async void btnSave_Click(object sender, RoutedEventArgs e)
{
    await settings.WriteSettings(settings);
}

そして、これはメソッド自体です

public async Task WriteSettings(Settings settings)
{
    var ser = new System.Xml.Serialization.XmlSerializer(typeof(Settings));
    var writer = new StringWriter();
    ser.Serialize(writer, settings);
    dom.LoadXml(writer.ToString());
    StorageFolder sf = ApplicationData.Current.LocalFolder;
    StorageFile st;
    st = await sf.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting); // here i get the error
    await dom.SaveToFileAsync(st);
}

皆さんが問題を理解し、解決策を得るのを手伝ってくれることを願っています

4

1 に答える 1

1

ファイルに複数回アクセスしようとすると、アクセスが拒否される理由がわかりました。使用後にファイルを閉じなかったためです。

これは私が今ファイルにアクセスする方法です:

public static async Task WriteSettings(Settings settings)
    {
        StorageFile file = await ApplicationData.Current.RoamingFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
        var stream = await file.OpenStreamForWriteAsync();

        var ser = new XmlSerializer(typeof(Settings));
        ser.Serialize(stream, settings);

        await stream.FlushAsync(); // This
        stream.Dispose(); // And this helped me solve my problem
    } 
于 2012-12-14T12:50:37.337 に答える