3

每隔一段时间,StorageFiles 就会被锁定,并且在尝试覆盖它们时我会收到 UnauthorizedAccessException。我无法复制它,它只会随机发生。这是创建文件的代码:

using (var stream = new MemoryStream())
{
    // ...populate stream with serialized data...

    StorageFile file;
    Stream fileStream;

    try
    {
        file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
    }
    catch (UnauthorizedAccessException ex)
    {
        Debug.WriteLine("Access denied on file {0}", fileName);
        return;
    }

    fileStream = await file.OpenStreamForWriteAsync();

    using (fileStream)
    {
        stream.Seek(0, SeekOrigin.Begin);
        await stream.CopyToAsync(fileStream);
        await fileStream.FlushAsync();
    }
}

一旦文件开始抛出 UnauthorizedAccessException,它总是会抛出它。好像系统已锁定文件,我无法触摸它。我必须卸载应用程序并重建。

当我在文档中打开文件时,我可以在那里看到该数据。一切都很好。写得很成功。

谁能看到我的代码有问题?

4

2 回答 2

1

当同时从代码中的两个不同点访问同一个文件时,可能会出现这种情况。

于 2015-04-08T15:06:08.453 回答
1

您是否将文件令牌保存在将来的访问列表中?我在加载文件并稍后尝试保存更新时遇到了这个问题。一旦我开始使用未来的访问列表,问题就消失了。

http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.accesscache.storageitemaccesslist

于 2012-10-04T20:30:23.290 回答