Code:
 Private receivebuffer(1024) As Byte
 Private allbytesread As New List(Of Byte)
Code:
 Private Sub gettcpdata(ByVal ar As IAsyncResult)

        Dim netstream As NetworkStream = CType(ar.AsyncState, NetworkStream)
        Dim numberofbytesread As Integer = netstream.EndRead(ar)
        If numberofbytesread = 0 Then Exit Sub

        'Is there a more elegant way to do this below?
        '-------------------------------------------------
        ReDim Preserve receivebuffer(numberofbytesread - 1)
        allbytesread.AddRange(receivebuffer)
        ReDim receivebuffer(1024)
        '-------------------------------------------------
        While netstream.DataAvailable
            netstream.BeginRead(receivebuffer, 0, 1024, New AsyncCallback(AddressOf gettcpdata), netstream)
        End While
        'Console.writeline below for debugging purposes only.
        Console.WriteLine("received:{0}", Encoding.ASCII.GetString(allbytesread.ToArray))
        'Raise an event to signal / send data back to main thread as a list of bytes not a string
        allbytesread.Clear()
        netstream.BeginRead(receivebuffer, 0, 1024, New AsyncCallback(AddressOf gettcpdata), netstream) 'keep on looping

    End Sub
This code works. Its missing some exception handling etc but it IS NOT good code can anyone suggest a way to improve it.

Thanks

Adrian