私のチームでも同様の障害に遭遇しました。一部のコメンターは、開発者はファイルの使用にもっと慣れる必要があると示唆しています。ファイルシステムを直接使用するオプションがある場合は、それを行いますが、常にオプションであるとは限りません。
必要に応じて、ファイルから読み取ったデータをアプリケーションに渡したい場合、データの読み取りが完了する前に破棄される可能性があるため、FileStream オブジェクトを渡すことはできません。私たちは当初、データを簡単に受け渡せるようにするために MemoryStreams に頼っていましたが、同じ問題に遭遇しました。
問題を軽減するために、いくつかの異なる回避策を使用しました。
使用したオプションは次のとおりです。
- 複数のデータを格納するためのラッパー クラスを実装します (配列は依然として
int.MaxValue
エントリの数に制限されているため) byte[] オブジェクトと、それらをほとんどストリームのように扱うことができるメソッドを公開します。私たちは今でもこれを何としても避けようとしています。
- ある種の「トークン」を使用してデータの場所への参照を渡し、アプリケーションで「ジャストインタイム」にデータをロードするのを待ちます。