我有一个过程,我正在将字节数组写入文件(StorageFile
)。该过程定期运行,同时需要在另一个进程中从文件的开头读取。这两个过程在不同的类中。当我开始读取文件时,写入操作失败,出现拒绝访问错误。windows 8 C#同时读取和写入文件
这里的文件是一个StorageFile
内的应用程序文件夹。
写方法调用:
IRandomAccessStream randomStream = await targetFile.OpenAsync(FileAccessMode.ReadWrite);
Stream stream = randomStream.AsStreamForWrite();
读取方法调用:
IRandomAccessStream randomStream = await targetFile.OpenAsync(FileAccessMode.Read);
Stream stream = randomStream.AsStreamForRead();
这两种操作从不同的方法发生同时,它导致访问被拒绝的错误。似乎我可以使用相同的方法内的读/写,同时打开写入。 但如何从不同的方法做到这一点?
我们有没有类似于之前的System.IO.FileShare
,所以我可以明确地说这个文件需要从同一个应用中的另一个位置访问?
如果这只是方法,请使用锁定。有了这个,你可以相互排除 – Offler
写入时,我追加到流的末尾。我不是每次都打开文件,每次写入大量数据并关闭文件。这可能是不可能的,因为这两个操作的读写需要不断发生... –
使用真正的数据库,win8现代应用程序支持SQLite,http://wp.qmatteoq.com/using-sqlite-in -your-windows-8-metro-style-applications/ –