private async void SocketOnDataReceived(object sender, SocketDataReceivedEventArgs socketDataReceivedEventArgs) { var packetReceivedEventHandler = this.PacketReceived; if (packetReceivedEventHandler == null) { return; } var packetFactory = new DicePacketFactory(); var packets = packetFactory.FromBytes(socketDataReceivedEventArgs.DataReceived); var maxSequenceId = this.sequenceId; foreach (var packet in packets) { maxSequenceId = packet.Sequence.Id > maxSequenceId ? packet.Sequence.Id : maxSequenceId; await packetReceivedEventHandler.InvokeAllAsync(this, new DicePacketEventArgs(packet)); } await this.UpdateSequenceIdAsync(maxSequenceId); }
private async Task InvokeDataReceived(byte[] bytesRead) { var dataReceivedEventHandler = DataReceived; if (dataReceivedEventHandler == null) return; var eventArgs = new SocketDataReceivedEventArgs(bytesRead); var receivers = dataReceivedEventHandler.GetInvocationList(); foreach (EventHandler<SocketDataReceivedEventArgs> receiver in receivers) { await Task.Factory .FromAsync<object, SocketDataReceivedEventArgs>(receiver.BeginInvoke, receiver.EndInvoke, this, eventArgs, null); } }