I'm used to windows forms handling and haven't done much console work before, so i'm not sure what the right way of doing this is. I'm also not thread-savvy beyond what I listed above (I know it works and I know what it does, so I use it).
I have a socket listening on a background thread (so...
In a windows forms app, It is my understanding that I can easily invoke on the forms underlying thread like this:
Private Delegate Sub DelegateHandlerName(ByVal foo As Object)
Dim T As New Thread(AddressOf InvokeDelegate)
T.IsBackground = True