大きなテキスト ファイル (0.5 ギガ) があり、さまざまな状況で何度も解析する必要があり、1 つのメソッドで 40 回も解析する必要があります。もちろん、これには長い時間がかかるので、ファイルを同時に処理することで、ファイルをより速く処理しようとしました。MemoryMappedFile
aは大きなファイルと同時実行性を処理するのに優れていることを理解しているので、それを使用することにしました。
現在、ファイルの 2 つのビューを同時に作成しています (ビューは 2 つの異なる部分です) が、一方のビューはうまく機能しますが、もう一方はUnauthorizedAccessException
. 有罪のコードは次のとおりです。
private void PartitionAndAnalyzeTextBlock(int start, int length)
{
Console.WriteLine("Starting analysis");
//Exception thrown here
using (var accessor = file.CreateViewAccessor(start, length, MemoryMappedFileAccess.Read))
{
char[] buffer = new char[BufferSize];
for (long i = 0; i < length; i += 5)
{
accessor.ReadArray(i, buffer, 0, 5);
string retString = new string(buffer);
frequencyCounter.AddOrUpdate(retString, 1, (s, j) => j++);
}
}
Console.WriteLine("Finished analysis");
}
file
次の行でインスタンス化されます。
private MemoryMappedFile file = MemoryMappedFile.CreateFromFile(path, FileMode.Open, "MemoryMappedPi");
何が原因か分かりますか?