Hello everyone, I'm having problem using Monitor with NetMQ. Please tell me if 
there is a dedicated place to ask about NetMQ, or possibly report bug.
Here's what I do :
 1) I create and bind a DEALER socket, associate a monitor to it and start 
monitoring it.
 2) Then I Unbind the socket, stop monitoring, dispose everything but the 
NetMQContext.
 3) Finally, I want to start again 1) but I receive a NetMQException because 
the inproc socket created by the DEALER socket to send event to its monitor is 
still alive.

Next is a simple code to see my problem : 

using System;
using System.Threading;
using NetMQ;
using System.Threading.Tasks;
using NetMQ.Monitoring;
using NetMQ.zmq;

namespace Server
{
    class ServerProg
    {
        static void CreateServerSocket(NetMQContext ctx)
        {
            try
            {
                using (var server = ctx.CreateDealerSocket())
                {
                    var monitor = new NetMQMonitor(ctx, server, 
"inproc://*:4556.monitor",
                                                   SocketEvent.Connected | 
SocketEvent.Disconnected);
                    Task monitorTask = Task.Factory.StartNew(monitor.Start);
                    server.Bind("tcp://*:4556");
                    Thread.Sleep(500);
                    server.Unbind("tcp://*:4556");
                    monitor.Stop();
                    monitor.Dispose();
                    server.Close();
                    server.Dispose();
                }
            }
            catch (NetMQException e)
            {
                Console.Out.WriteLine("Exception: " + e);
                throw;
            }
        }

        static void Main(string[] args)
        {
            using (NetMQContext ctx = NetMQContext.Create())
            {
                CreateServerSocket(ctx);
                CreateServerSocket(ctx);
            }
        }
    }
}
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to