public void Dispose() { if (this.disposed) { return; } this.disposed = true; this.CurrentState = RosbridgeMessageDispatcherStates.Stopped; Task.Run(async() => { if (this.socket != null) { await this.socket.DisconnectAsync(); this.socket.Dispose(); this.socket = null; } if (this.receivingTask != null) { await this.receivingTask; this.receivingTask = null; } this.rosbridgeMessageSerializer = null; }); GC.SuppressFinalize(this); }
public RosbridgeMessageDispatcher(ISocket socket, IRosbridgeMessageSerializer rosbridgeMessageSerializer) { if (socket == null) { throw new ArgumentNullException(nameof(socket)); } if (rosbridgeMessageSerializer == null) { throw new ArgumentNullException(nameof(rosbridgeMessageSerializer)); } this.socket = socket; this.rosbridgeMessageSerializer = rosbridgeMessageSerializer; this.CurrentState = RosbridgeMessageDispatcherStates.Stopped; }