ThreadPool
을 사용하여 소켓 서버에서 연결된 모든 소켓을 개별적으로 처리합니다. 그러나 나는 BeginReceive의 콜백도 HandleAsyncReceive
콜백이 또한 새로운 스레드에서 (ThreadPool이로 잡고 된)가 실행됩니다 않습니다 ThreadPool이콜백을 사용하여 ThreadPool 사용
ThreadPool.QueueUserWorkItem(o =>
{
if (ClientExchange != null && ClientExchange(asynchronousState)) {
if (ClientConnect != null) {
ClientConnect(asynchronousState);
}
}
ConnectedClients.Add(ipEndPoint, socket);
socket.BeginReceive(asynchronousState.Buffer, 0, asynchronousState.Buffer.Length, SocketFlags.None, HandleAsyncReceive, asynchronousState);
});
내에서 실행 얻는 경우에 궁금해?
'Thread.CurrentThread.ManagedThreadId'를 인쇄했을 때 당신은 무엇을 보았습니까? –
풀 스레드를 명시 적으로 사용할 필요가 없습니다. 'BeginReceive' 콜백이 호출 된 동일한 스레드에서 처리를 수행 할 수 있습니다.이 스레드는 무작위이지만 다른 풀 스레드가 될 것입니다. 이 답변에 대한 의견을 확인하십시오 : http://stackoverflow.com/a/22017432/1768303 – Noseratio