protected override void ProducerAction() { using (NetMQContext ctx = NetMQContext.Create()) { using (SubscriberSocket socket = ctx.CreateSubscriberSocket()) { using ( var monitor = new NetMQMonitor(ctx, socket, "inproc://monitor.sub/" + Guid.NewGuid(), SocketEvent.Connected | SocketEvent.Disconnected)) { monitor.Connected += monitor_Connected; monitor.Disconnected += monitor_Disconnected; monitor.Timeout = TimeSpan.FromMilliseconds(100); Task.Factory.StartNew(monitor.Start); socket.Connect(Address); socket.Subscribe(string.Empty); while (true) { _commandProcessor.ExecuteAll(socket); NetMQMessage message = socket.ReceiveMessage(); if (message != null && !IsEmpty) { Queue.Add(message); } } } } } }