【问题标题】:Access is denied. When i try CRUD XML files using XAML for windows 8 [closed]访问被拒绝。当我使用 Windows 8 的 XAML 尝试 CRUD XML 文件时 [关闭]
【发布时间】:2012-11-29 13:32:46
【问题描述】:

它不会每次都抛出这个错误,这就是它奇怪的原因。 我有 50% 的机会成功。

这就是我调用保存方法的方式

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);
}

我希望你们能理解问题并帮助我解决问题

【问题讨论】:

标签: xml xaml windows-8 crud


【解决方案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
    } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    相关资源
    最近更新 更多