我的类库有很大的麻烦,它用于通过套接字获取和发送文本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窗体应用程序中使用它时。你能救我吗?
答案 0 :(得分:0)
AcceptNewSocket()看起来真的很可疑给我。我强烈建议您查看它。
list.AcceptSocket()做什么?这可能是处理套接字的可能位置。
为什么要递归创建线程?这可能会产生数十个线程,因此在处理套接字时会抛出异常。
而且......除此之外,我会使用ThreadPool类而不是Threads来获得更好的性能。