private void ReceiveCallback(IAsyncResult asyncResult) { try { // Retrieve the state object and the clientSocket socket from the asynchronous state object. CallbackReceiveState callbackReceiveState = ( CallbackReceiveState )asyncResult.AsyncState; // Read data from the remote device. int bytesRead = ConnectedSocket.EndReceive(asyncResult); if (bytesRead > 0) { Logger.WriteEntry("ReceiveCallBack() Received " + bytesRead.ToString()); // Accumulate the received text. string receivedText = Encoding.ASCII.GetString(callbackReceiveState.ReceiveBuffer, 0, bytesRead); callbackReceiveState.Sb.Append(receivedText); // Recursively get the rest of the data. BeginReceive(); } else { Logger.WriteEntry("ReceiveCallBack() Received 0 bytes. Should be done. "); // All the text has arrived. if (callbackReceiveState.Sb.Length > 1) { this.ReceivedText = callbackReceiveState.Sb.ToString(); } Logger.WriteEntry("ReceiveDoneEvent.Set() to signal completion."); // Signal the completion of the message. ReceiveDoneEvent.Set(); } } catch (Exception e) { Logger.WriteEntry(e.ToString()); } }
protected void InitializeAsyncReceive() { ReceivedText = ""; ReceiveDoneEvent.Reset(); ReceiveState = new CallbackReceiveState(); }