0

我的类库用于通过套接字获取和发送文本消息时遇到了很大的麻烦。这是我的简单代码:

private void AcceptNewSocket()
{
    Socket socket = list.AcceptSocket();
    socket.ReceiveBufferSize = 1001;
    Thread socketTh = new Thread(new ThreadStart(AcceptNewSocket));
    socketTh.Start();
    WaitForMessenge(socket);
}

private void WaitForMessenge(Socket socket)
{
    byte[] buff = new byte[1001];
    int bufcount = socket.Receive(buff);
    /////////some operations on byte array
    while(bufcount > 0)
    {
      buffcount = socket.Receive(buff); //HERE it throws ObjectDisposedException and source is socket
      /////some operations on byte array
    }
 }

当我在控制台应用程序中使用我的库时没有任何例外。当我在 Windows 窗体应用程序中使用它时会发生这种情况。你能帮助我吗 ?

4

1 回答 1

0

AcceptNewSocket() 在我看来真的很可疑。我强烈建议对其进行审查。

list.AcceptSocket() 有什么作用?这可能是处理套接字的可能位置。

为什么要递归创建线程?这可能会产生数十个线程,因此在处理套接字时它们会抛出异常。

好吧......除此之外,我会使用 ThreadPool 类而不是 Threads 以获得更好的性能。

于 2015-01-30T16:32:11.257 回答