2012-05-09 3 views
1

Я построил два приложения. Один - Клиент, а другой - Сервер.Подключиться к NamedPipeClientStream после потери связи (.NET)

Они общаются по именованным трубам. Клиент создает NamedPipeClientStream. Все работает нормально, за исключением случаев, когда сервер закрывает соединение или завершает работу сервера.

После завершения подачи конвейера на клиентской части свойство IsConnected присваивается значение false. Это нормально. Но если я попытаюсь открыть NamedPipeClientStream, это никогда не удастся. После перезагрузки сервера я ожидал от клиента открыть соединение, но этого никогда не произойдет.

Каждый раз, когда он пытается восстановить соединение TimeOutException, возникает. Единственное решение - выйти из приложения и запустить его снова. Но это не вариант для меня.

Кто угодно, пожалуйста, помогите!

ответ

2

Ничего.

Проблема заключалась в том, чтобы не закрывать трубу считывания на стороне клинета после отключения от сервера.

Раствор

try{ 
    while(true){ 
     ... Reading from the PIPE ... 
    } 
} 
finally{ 
pipeStream.Close(); 
pipeStream.Dispose(); 
IsRunning = false; 
} 

НЕ ЗАБУДЬТЕ ЗАКРЫТЬ и утилизовать Струи !!!

Смежные вопросы