@@ -397,7 +397,7 @@ public virtual string Receive(long size)
397397 public virtual void ReceiveAsync ( )
398398 {
399399 // Try to receive datagram
400- if ( Thread . CurrentThread . ManagedThreadId == _sendThreadId )
400+ if ( Thread . CurrentThread . ManagedThreadId == _receiveThreadId )
401401 ThreadPool . QueueUserWorkItem ( _ => TryReceive ( ) ) ;
402402 else
403403 TryReceive ( ) ;
@@ -526,6 +526,7 @@ private void ProcessReceive(SocketAsyncEventArgs e)
526526 if ( ! IsConnected )
527527 return ;
528528
529+ bool recursive = ( Thread . CurrentThread . ManagedThreadId == _receiveThreadId ) ;
529530 long size = e . BytesTransferred ;
530531
531532 // Received some data from the client
@@ -552,7 +553,7 @@ private void ProcessReceive(SocketAsyncEventArgs e)
552553 // If zero is returned from a read operation, the remote end has closed the connection
553554 if ( size > 0 )
554555 {
555- if ( Thread . CurrentThread . ManagedThreadId == _sendThreadId )
556+ if ( recursive )
556557 ThreadPool . QueueUserWorkItem ( _ => TryReceive ( ) ) ;
557558 else
558559 TryReceive ( ) ;
@@ -577,6 +578,7 @@ private void ProcessSend(SocketAsyncEventArgs e)
577578 if ( ! IsConnected )
578579 return ;
579580
581+ bool recursive = ( Thread . CurrentThread . ManagedThreadId == _sendThreadId ) ;
580582 long size = e . BytesTransferred ;
581583
582584 // Send some data to the client
@@ -608,7 +610,7 @@ private void ProcessSend(SocketAsyncEventArgs e)
608610 // Try to send again if the session is valid
609611 if ( e . SocketError == SocketError . Success )
610612 {
611- if ( Thread . CurrentThread . ManagedThreadId == _sendThreadId )
613+ if ( recursive )
612614 ThreadPool . QueueUserWorkItem ( _ => TrySend ( ) ) ;
613615 else
614616 TrySend ( ) ;
0 commit comments