マルチスレッド(たくさんのスレッド)を使用し、各スレッドからデータをログする必要があるプログラムがあります。実際に小さなデータサンプルをたくさん出力しますが、それは非常に高速です。私のデータの関心は、すべてのサンプルを連続して記録することです。BufferSizeの効果
私は、高い頻度で更新するいくつかの数字だけを記録する必要があります。 データを1つのファイルに追加したい(複数のスレッドを1つのファイルに追加する)。私はBUFFERSIZEのいただきました効果は、StreamWriter EA
const int BufferSize = 65536; // 64 Kilobytes
StreamWriter sw = new StreamWriter("filename", true, Encoding.UTF8, BufferSize);
を利用する場合、私は不思議何
? バッファがいっぱいになるか、ストリームライターがディスクにフラッシュされるまで、データは書き込まれませんか?プログラムの設計に関しては、各スレッド内にストリームライターメソッドを置くことも、プログラムの起動時に単一のライターを作成することもできます(スレッドはappend writeのみを実行するようになります) )
私には高速ロギングが重要であり、サンプルが緩んでいないのですべてをディスクに書き込む必要があります。バッファが一杯ではないので、すべての方法が書き込まれ、キューに入れられないことが保証されなければなりません。いくつかのボタンがヒットされないまで、連続的に、このデータを提供する。
お客様の要件では、バッファリングしない*としています。もちろん、バッファサイズはまったく問題になりません。 AutoFlush = trueと設定してください。 –