У меня есть программа, которая использует многопоточность (много потоков) и должна регистрировать данные из каждого потока. Он выводит много очень маленьких выборок данных, но делает это очень быстро. Мой интерес к данным состоит в том, чтобы регистрировать все образцы непрерывным образом.
Поэтому мне нужно зарегистрировать только несколько номеров, которые обновляются с высокой частотой. Я хотел бы добавить данные в один файл (несколько потоков в один файл).
Что меня удивляет, если я использую streamwriter ea
const int BufferSize = 65536; // 64 Kilobytes
StreamWriter sw = new StreamWriter("filename", true, Encoding.UTF8, BufferSize);
Каков эффект Buffersize? Не будут ли данные записываться до тех пор, пока буфер не будет заполнен или пока устройство записи потока не будет сброшено на диск? (или сбрасывается, используя конструкцию using (также заканчивающуюся с помощью сбрасывания операторов). Что касается дизайна программы, я мог бы поместить метод записи потока в каждый поток или создать один модуль записи при запуске программы (чтобы потоки выполняли только запись добавления ).
Для меня важно быстрое ведение журнала, и все должно быть записано на диск, так как я не могу потерять образцы. Я должен быть уверен, что он всегда записывается, а не ставится в очередь, потому что буфер еще не заполнен. Мне также нужно предоставлять эти данные непрерывным образом, пока не будет нажата какая-либо кнопка. (не могу сохранить в памяти)