使用socket时ObjectDisposedException

时间:2015-01-30 16:13:51

标签: c# sockets objectdisposedexception

我的类库有很大的麻烦,它用于通过套接字获取和发送文本messenges。这是我的简单代码:

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窗体应用程序中使用它时。你能救我吗?

1 个答案:

答案 0 :(得分:0)

AcceptNewSocket()看起来真的很可疑给我。我强烈建议您查看它。

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

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

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