windows 8 C#同时读写文件

时间:2013-01-11 12:16:26

标签: c# windows-8

我有一个进程,我将字节数组写入文件(StorageFile)。该过程以定期的间隔运行,同时我需要在另一个过程中从文件的开头读取。这两个过程分为不同的类。当我开始读取文件时,写操作失败并显示访问被拒绝错误。

这里的文件是app文件夹中的StorageFile

write方法调用:

IRandomAccessStream randomStream = await targetFile.OpenAsync(FileAccessMode.ReadWrite);
Stream stream = randomStream.AsStreamForWrite();

read方法调用:

IRandomAccessStream randomStream = await targetFile.OpenAsync(FileAccessMode.Read);
Stream stream = randomStream.AsStreamForRead();

两个操作同时从不同的方法发生,并导致访问被拒绝错误。似乎我可以在打开写入时使用相同方法中的读/写但是如何从不同的方法做到这一点?

我们是否有类似于早期System.IO.FileShare的内容,以便我可以明确说明需要从同一个应用中的其他位置访问此文件?

1 个答案:

答案 0 :(得分:0)

除了切换到数据库类型设置之外,我建议缓冲对数组的写入,并根据缓冲区填充和/或某些时间过去将其写入块中。除非你需要最新和最好的性能,直到毫秒,我怀疑人们会注意到性能影响。您必须使用缓冲区大小,以确保为读者提供足够的时间来实际读取文件。

在阅读器方面,您可以在文件上实现FileSystemWatcher对象。