Отмена NamedPipeClientStream. Считайте вызов

Я озирался на всем протяжении сети, но я не могу найти ответ на следующий вопрос.

У меня есть экземпляр C#/.NET NamedPipeClientStream в клиентской программе, и рабочий поток называет NamedPipeClientStream. Читайте (байт [], интервал, интервал) для получения данных из сервера. Сервер отправляет обновления данных клиенту.

Read является блокирующимся вызовом. Если я хочу закрыть клиент, есть ли способ отменить/выйти вызов Read? Я попытался звонить Близко на экземпляре именованного канала, но он не имеет никакого эффекта на поток который названный Read.

Я думал бы, что будет способ отменить вызов Read. В противном случае это походит, который является очень плохо разработанным API, потому что Ваша программа во власти канала.

Любая информация значительно ценится.

- Chris

7
задан Joel Coehoorn 1 March 2010 в 20:03
поделиться

2 ответа

Используйте конструктор NamedPipeClientStream, который принимает аргумент PipeOptions. Указание PipeOptions.Asynchronous завершит вызов Read () при вызове метода Close (). Метод Read () возвращает 0.

9
ответ дан 7 December 2019 в 03:15
поделиться

Это не прямой ответ на ваш вопрос, но - мне пришлось недавно сделать несколько IPC NamedPipe, и я обнаружил, что WCF - это круто. Мне потребовалось меньше часа, чтобы реализовать POC, и да, я почти уверен, что он также предоставляет средства для отмены вашего запроса - и вам не нужно думать в терминах байтовых массивов.

Это вариант для вас?

0
ответ дан 7 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: