private void MessageSentCallback(IAsyncResult result) { ITransferContext context = (ITransferContext)result.AsyncState; try { int sendcount = context.Listener.EndSend(result); } catch (SocketException) { } catch (ObjectDisposedException) { } if (context.SerialPacketId >= 0) { TransferOperation request = new TransferOperation(context.Transfer, MessagePart.Message, DirectionType.Send); request.Resolve(); context.Listener.BeginSend(context.SerialPacket, 0, context.SerialPacket.Length, SocketFlags.None, MessageSentCallback, context); } else { if (!context.ReceiveMessage) { context.Close = true; } context.MessageSentNotice.Set(); MessageSent.Execute(this); } }
public void MessageSentCallback(IAsyncResult result) { ITransferContext context = (ITransferContext)result.AsyncState; try { int sendcount = context.Listener.EndSend(result); } catch (SocketException) { } catch (ObjectDisposedException) { } if (context.SerialPacketId >= 0 || context.ObjectPosition < (context.Transfer.MyHeader.Context.ObjectsCount - 1)) { TransferOperation request = new TransferOperation(context.Transfer, MessagePart.Message, DirectionType.Send); request.Resolve(); context.Listener.BeginSend(context.SerialPacket, 0, context.SerialPacket.Length, SocketFlags.None, MessageSentCallback, context); } else { if (context.ReceiveMessage) { context.MessageReceivedNotice.WaitOne(); } //int _timeout = 0; // while (IsConnected(context.Id) && timeout < 10) _timeout++; context.Close = true; context.MessageSentNotice.Set(); try { MessageSent.Execute(context); } catch (Exception ex) { Echo(ex.Message); CloseClient(context.Id); } } }