NetMQ.Poller.Cancel C# (CSharp) Method

Cancel() private method

Signal this poller to stop, and return immediately if waitForCloseToComplete is false, block until the poller has actually stopped if waitForCloseToComplete is true.
if this poller has already been disposed if this poller has not been started
private Cancel ( bool waitForCloseToComplete ) : void
waitForCloseToComplete bool block until the poller has actually stopped
return void
        private void Cancel(bool waitForCloseToComplete)
        {
            if (m_disposed)
            {
                throw new ObjectDisposedException("Poller is already disposed");
            }

            if (m_switch.Status)
            {
                Interlocked.Exchange(ref m_cancel, 1);

                if (waitForCloseToComplete)
                {
                    m_switch.WaitForOff();
                }
            }
            else
            {
                throw new InvalidOperationException("Poller is unstarted");
            }
        }

Same methods

Poller::Cancel ( ) : void

Usage Example

Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            //
            // Task worker - design 2
            // Adds pub-sub flow to receive and respond to kill signal
            //
            // Author: metadings
            //

            // Socket to receive messages on,
            // Socket to send messages to and
            // Socket for control input
            using (var context = NetMQContext.Create())
            using (var receiver = context.CreatePullSocket())
            using (var sender = context.CreatePushSocket())
            using (var controller = context.CreateSubscriberSocket())
            {
                receiver.Connect("tcp://127.0.0.1:5557");
                sender.Connect("tcp://127.0.0.1:5558");
                controller.Connect("tcp://127.0.0.1:5559");

                controller.SubscribeToAnyTopic();

                var poller = new Poller();
                poller.AddSocket(receiver);
                poller.AddSocket(controller);

                receiver.ReceiveReady += (o, eventArgs) =>
                {
                    var workload = int.Parse(eventArgs.Socket.ReceiveFrameString());

                    Console.WriteLine("{0}.", workload); // Show progress

                    Thread.Sleep(workload); // Do the work

                    sender.SendFrame(new byte[0]); // Send results to sink
                };

                controller.ReceiveReady += (o, eventArgs) =>
                {
                    if (eventArgs.Socket.ReceiveFrameString() == "KILL");
                        poller.Cancel();
                };

                poller.PollTillCancelled();
            }
        }
All Usage Examples Of NetMQ.Poller::Cancel