Я использую NetworkStream и TcpClient для асинхронного получения данных с помощью BeginRead. Мне нужно применить тайм-аут к этой операции, чтобы по истечении указанного времени чтение было прервано.
Насколько я могу судить, это не поддерживается в NetworkStream или TcpClient — есть свойство ReceiveTimeout, но оно, по-видимому, применимо только к синхронному эквиваленту — «Чтение».
Даже базовый класс Socket не поддерживает тайм-ауты в методе BeginReceive.
Я искал эту проблему, и единственное предлагаемое решение, которое я видел, - это настроить другой фоновый поток для отмены операции, если она не завершается в течение периода ожидания. Это похоже на ужасный взлом. Наверняка есть лучший способ?