我有一個過程,我正在將字節數組寫入文件(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/ –