3

バイト配列をファイルに書き込むプロセスがあります(StorageFile)。プロセスは定期的に実行され、同時に別のプロセスでファイルの先頭から読み取る必要があります。2つのプロセスは異なるクラスにあります。ファイルの読み取りを開始すると、書き込み操作が失敗し、アクセス拒否エラーが発生します。

ここで、ファイルはStorageFileappフォルダー内にあります。

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このファイルは同じアプリ内の別の場所からアクセスする必要があると明示的に言えるように、以前と同様のものがありますか?

4

1 に答える 1

0

データベースタイプのセットアップに切り替える以外に、書き込みを配列にバッファリングし、バッファの充填および/または経過時間の特定に基づいて、それらをチャンクに書き込むことをお勧めします。ミリ秒単位の最新かつ最高のパフォーマンスが必要でない限り、人々がパフォーマンスへの影響に気付くとは思えません。リーダーが実際にファイルを読み取るのに十分な時間を確保するために、バッファー サイズを調整する必要があります。

リーダー側では、ファイルにFileSystemWatcherオブジェクトを実装できます。

于 2013-01-11T14:09:06.893 に答える