private void AcceptConnections()
{
while (true)
{
// Accept a connection
Socket socket = _serverSocket.Accept();
ConnectionInfo connection = new ConnectionInfo();
connection.Socket = socket; // Create the thread for the receives.
connection.Thread = new Thread(ProcessConnection);
connection.Thread.IsBackground = true;
connection.Thread.Start(connection); // Store the socket
lock (_connections) _connections.Add(connection);
}
} private void ProcessConnection(object state)
{
ConnectionInfo connection = (ConnectionInfo)state;
byte[] buffer = new byte[255];
try
{
while (true)
{
int bytesRead = connection.Socket.Receive(buffer);
if (bytesRead > 0)
{
lock (_connections)
{
foreach (ConnectionInfo conn in _connections)
{
if (conn != connection)
{
conn.Socket.Send(
buffer, bytesRead, SocketFlags.None);
}
}
}
}
else if (bytesRead == 0) return;
}
}
在AcceptConnections()里产生大量的Thread怎么释放??
{
while (true)
{
// Accept a connection
Socket socket = _serverSocket.Accept();
ConnectionInfo connection = new ConnectionInfo();
connection.Socket = socket; // Create the thread for the receives.
connection.Thread = new Thread(ProcessConnection);
connection.Thread.IsBackground = true;
connection.Thread.Start(connection); // Store the socket
lock (_connections) _connections.Add(connection);
}
} private void ProcessConnection(object state)
{
ConnectionInfo connection = (ConnectionInfo)state;
byte[] buffer = new byte[255];
try
{
while (true)
{
int bytesRead = connection.Socket.Receive(buffer);
if (bytesRead > 0)
{
lock (_connections)
{
foreach (ConnectionInfo conn in _connections)
{
if (conn != connection)
{
conn.Socket.Send(
buffer, bytesRead, SocketFlags.None);
}
}
}
}
else if (bytesRead == 0) return;
}
}
在AcceptConnections()里产生大量的Thread怎么释放??
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货