BeginReceive / тайм-ауты BeginRead

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

Насколько я могу сказать, это не поддерживается на NetworkStream или TcpClient - существует свойство ReceiveTimeout, но это, кажется, только относится к синхронному эквиваленту - 'Чтение'.

Даже базовый класс Сокета, кажется, не поддерживает тайм-ауты в своем методе BeginReceive.

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

15
задан Barg 12 August 2010 в 09:34
поделиться