WCF IAsync или другой способ показать прогресс на клиенте? - PullRequest
0 голосов
/ 19 июня 2011

У меня есть простое консольное приложение, которое вызывает службу WCF через net.tcp и загружает файл (используя Stream).Служба WCF размещается самостоятельно, Framework 4.0.

Я ищу способ добавить некоторую «информацию о прогрессе» на стороне клиента.Должно ли это быть сделано с помощью рукописных операций IASync или чего-то еще?

1 Ответ

2 голосов
/ 19 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...