С# подцепить TimeOut к Stream(Writer)?(Reader)?
Есть NamedPipe со службой для Windows (также на C#).
Что на стороне сервера, что на стороне клиента есть объекты StreamReader и StreamWriter:
private StreamReader reader;
private StreamWriter writer;
public NPipeClient()
{
NamedPipeClientStream client = new NamedPipeClientStream(".", "GDSPipe", PipeDirection.InOut, PipeOptions.Asynchronous);
client.Connect();
this.reader = new StreamReader(client);
this.writer = new StreamWriter(client);
}
И я представляю ситуацию, когда данные ушли с клиента, а сервис в этот момент умирает и в таком случае клиент будет бесконечно ждать репла со стороны сервера, что мне абсолютно не нужно.
Пытался сделать вот так:
this.reader.BaseStream.ReadTimeout = 3000;
this.writer.BaseStream.WriteTimeout = 3000;
Но, как и ожидалось:
Вызвано исключение: "System.InvalidOperationException" в mscorlib.dll
Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll
Данный поток не поддерживает таймауты.
В остальных случаях нашел только асинхронную кашу, но, уверен кто-нибудь посоветует вариант по-лучше.