Насколько я знаю, нет способа сделать это, так что вы, скорее всего, в конечном итоге будете использовать несколько потоков. ИМХО использование одного потока на клиента - это, во-первых, намного более чистое решение, тогда вы можете просто вызвать Read () в потоке, и это может занять столько времени, сколько нужно, в то время как другие потоки делают то же самое для других клиентов. .
Потоки могут поначалу быть немного пугающими, особенно если вы используете Windows Forms (везде делегаты!), А не консольное приложение, но они очень полезны. При правильном использовании они могут сильно помочь, особенно в области сетевых технологий.