【问题标题】:Why can't I delete files I created in code in Metro style apps?为什么我不能删除我在 Metro 风格应用程序中的代码中创建的文件?
【发布时间】:2012-09-17 17:48:50
【问题描述】:

我可以在我的 Metro 风格应用程序中创建、读取和编辑由我的应用程序创建的文件,但它不允许我删除(是的,我确实设置了必要的声明和文件类型关联)!

我收到Access is denied. 消息,与在 Windows 8 Metro File Access 示例中使用(和工作)相同的代码:

private async void RemoveNote_Click(object sender, RoutedEventArgs e)
{
    try
    {
        StorageFile file = await KnownFolders.DocumentsLibrary.GetFileAsync(NotesList.SelectedItem.ToString());
        if (file != null)
        {
            await file.DeleteAsync();
            file = null;
        }

        notes.RemoveAt(NotesList.Items.IndexOf(NotesList.SelectedItem));
    }
    catch (Exception exception)
    {
        throw new Exception(exception.Message);
    }
}

有人可以帮忙吗?

【问题讨论】:

    标签: c# .net c#-4.0 io microsoft-metro


    【解决方案1】:

    您是否忘记在某处关闭文件流?

    【讨论】:

    • :-/ 不,@spender - 我实际上记得关闭它们。由于 StorageFile 没有 Dispose() 或 Close(),因此我为其分配了一个空值,例如 file = null; - 如 Metro 示例所示。够了吗?
    • @JTS-V 你使用 DataWriter 还是 StorageStreamTransaction?那些需要被包裹在一个 using 块中
    • 我刚刚意识到,当我得到 SelectedItem 时 - 它没有得到所选项目的值。它只是返回NoteView.Note - 这就是为什么它说访问被拒绝。但是,那么,如何在 XAML Metro ListBox 中获取所选项目的文本值?
    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 2019-05-30
    • 2015-06-13
    • 2011-11-19
    相关资源
    最近更新 更多