2011-01-26 2 views
5

У меня есть приложение формы для родительских окон и дочерний файл commandline.exe. Использование модифицированного примера MSDN для анонимных каналов (h ttp://msdn.microsoft.com/en-us/library/bb546102.aspx) Я могу отправить сериализованный объект из родительского элемента в дочерний. Ребенок может десериализовать объект и прочитать значения..net C# Анонимные трубы - неправильно?

Возможно, я неправильно понимаю механику анонимной трубы, однако я ожидаю, что труба останется открытой, пока я ее не закрою, так что я могу отправить другой объект, когда захочу, однако после того, как объект отправлен/принят труба больше не подключена (определяется свойством IsConnected).

В настоящий момент, когда объект отправляется от родителя к дочернему, труба закрывается (а не «мной»). Я поддерживаю ссылку на исходный pipeHandle локально, но, похоже, не может снова открыть трубку. Должен ли я иметь возможность или не закрывать его в первую очередь? Я не вижу, как я могу открыть еще один новый канал, поскольку я не могу передать дескриптор от родителя к клиенту (первый экземпляр был передан аргументами в первом случае)

Как отправить другой объект из родительский ребенок?

Я понимаю, что могу использовать Named-Pipes, но MSDN рекомендует анонимные каналы для IPC на том же локальном компьютере.

Большое спасибо

Арни

+1

Пожалуйста, внесите ваш код. –

ответ

7

Если вы делаете, как в образце MSDN вы закрывающей StreamWriter (с using заявление), и closing a StreamWriter закрывает основной поток. Труба остается открытой, пока поток остается открытым, поэтому, если вы не хотите его закрывать, не закрывайте поток, а также StreamWriter.