Async Socket Listener в отдельном потоке - VB.net - PullRequest
0 голосов
/ 26 марта 2010

Я пытаюсь использовать код от Microsoft для подключения Async Socket. Похоже, что слушатель работает в основном потоке, блокирующем графический интерфейс. Я новичок как в сокетных соединениях, так и в многопоточности одновременно. С трудом пытаясь обдумать это все сразу.

Код используется на http://msdn.microsoft.com/en-us/library/fx6588te.aspx Используя этот пример, как я могу переместить слушателя в его собственный поток?

 Public Shared Sub Main()
    ' Data buffer for incoming data.
    Dim bytes() As Byte = New [Byte](1023) {}

    ' Establish the local endpoint for the socket.
    Dim ipHostInfo As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim ipAddress As IPAddress = ipHostInfo.AddressList(1)
    Dim localEndPoint As New IPEndPoint(ipAddress, 11000)

    ' Create a TCP/IP socket.
    Dim listener As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

    ' Bind the socket to the local endpoint and listen for incoming connections.
    listener.Bind(localEndPoint)
    listener.Listen(100)

1 Ответ

1 голос
/ 26 марта 2010

Вы можете просто вызвать метод Main сокета в асинхронном режиме.Вы можете использовать:

Call New Action(AddressOf _
                AsynchronousSocketListener.Main).BeginInvoke(Nothing, Nothing)

или:

Call New Threading.Thread(AddressOf AsynchronousSocketListener.Main).Start()

(или использовать BackgroundWorker )

...