Как повторно использовать трубу - PullRequest
0 голосов
/ 01 июля 2019

У меня следующая проблема. Я пытаюсь повторно использовать NamedPipe для следующих компонентов:

  • Winservice, который порождает приложение Winforms при каждом SessionChange

  • Приложение Winforms

Поэтому, когда кто-то входит в систему, мой процесс Session 0 порождает новый Winforms, открывает канал для него иначинает обмениваться сообщениями.

Нужно ли создавать новый экземпляр NamedPipeServerStream на стороне Winservice каждый раз, когда кто-то входит в систему?Я знаю, что вы можете указать количество подключений при перегрузке NamedPipeServerStream, но это не помогает мне, поскольку это будет длительный процесс.

var server = new NamedPipeServerStream(
                "somePipe",
                PipeDirection.InOut,
                1, PipeTransmissionMode.Message
                );

await server.WaitForConnectionAsync();

Из того, что я вижу, я должен реализоватьчто-то вроде PipePool, когда клиент (Winforms) отключается, я собираю канал и повторно инициализирую его.Я не прав, можно ли повторно использовать объекты канала?

PS Ради простоты я рассмотрю только случай, когда открыт только один сеанс.

...