4

我无法理解 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();
}

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

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

4

1 回答 1

4

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

于 2013-11-05T10:34:47.783 回答