Есть несколько способов сделать это.
Самый простой способ - предложить парню, который просто избил меня до отказа, и вместо прямого вызова MemoryStream.Write (), напишите метод в вашем приложении, который вызывает MemoryStream.Write (), а затем вызывает событие, которое Вы объявляете себя вне объекта MemoryStream.
В более экзотическом, но более лаконичном углу вы могли бы осмелиться и унаследовать класс от MemoryStream, где вы добавляете свойство события и переопределяете метод Write () (или любой другой метод (методы), который вы вызываете для записи), вызовите метод Write () базового класса, а затем вызовите событие. Некоторые могут допустить такой подход, и он может оказаться не совсем идеальным или проблематичным, в зависимости от того, как вы используете MemoryStream, но он будет выполнять ту работу, которую вы хотите, и не будет поднимать событие каждый раз, когда вы пишете.