Вам нужен поток, который записывает как в файл, так и в другой поток, который вы смотрите, - разделитель потока, широко известный в мире Unix как tee
.
Для .NET вы можете использовать эту реализацию потокового разветвителя. Передайте ему FileStream
(чтобы файл был записан) и для второго потока передайте реализацию Stream
, которая делает все, что вы хотите, когда записывается поток (например, подкласс MemoryStream
с переопределено Write
метод).
Обновление: Я вижу из вашего комментария, что мой ответ не тот, который вам нужен - я не понял из вашего исходного вопроса, что вы не контролировали запись приложения в файл.
Чтобы получить такой вид управления, для наилучшего управления вам нужно обратиться к низкоуровневому драйверу, который перехватывает системные вызовы - так же, как FileMon . Для немного меньшего контроля вы можете использовать System.IO.FileSystemWatcher .