没有引发clrzmq Socket.ReceiveReady事件

时间:2013-10-24 08:02:15

标签: c# zeromq

我无法理解clrzmq(3.0.0 rc1)Socket.ReceiveReady事件。在惯用的C#代码中,我希望注册一个事件处理程序,然后坐下来等待处理程序被调用:

socket.ReceiveReady += (o, e) => Console.WriteLine ("Success!");

然而,除非我也积极地进行民意调查,否则这个事件永远不会被提出:

var poller = new Poller( new[] {socket} );
while (true) {
    poller.Poll();
}

这对我来说完全违反直觉:我应该轮询(即使用基于拉的模型)或者监听事件(即使用基于推送的模型)。

那么,这真的是正确的方法,还是我错过了更简单的东西?

1 个答案:

答案 0 :(得分:4)

是的,这似乎是正确的方法。在NetMQ中,这些事件仅由NetMQSocket.Poll()Poller.Start()调用。需要轮询,因为需要一个专用线程来处理来自套接字的消息。