Я подозреваю, что вы переосмыслили проблему. Сетевые коммуникации имеют буфер, потому что они не могут реально ожидать, что приложение будет готово и ожидает каждого переданного бита. Я бы посоветовал прочитать столько данных, сколько доступно, поспать и повторить.
Do Until all data is read
While buffer contains data
read data
Wend
' Let other threads have a go, but come back as soon as possible.
Thread.Sleep(0)
Loop
Подходит ли это вашей цели?