На самом деле это довольно просто, хотя решение не имеет ничего общего с WCF. Создайте оболочку Stream
подкласса, в которую вы передаете фактический исходный поток. В различных переопределениях Read
сначала делегируйте в базовый поток, который вы переносите. Затем увеличьте пользовательское свойство на количество прочитанных байтов и либо запустите пользовательское событие, либо, возможно, реализуйте INotifyPropertyChanged в пользовательском подклассе Stream. Сделав это, поскольку WCF читает из потока-обертки, чтобы получить байты для отправки по проводам, ваш клиент сможет наблюдать за изменениями.