尽管有可用消息,Socket.ReceiveReady 仍未触发

Socket.ReceiveReady is not fired despite available messages

我已经开始探索 NetMQ 3.3.0.11 和 运行 使用 Poller 的问题。

我尝试实现轮询器轮询大约 1 秒然后停止并允许在恢复轮询 1 秒之前完成其他事情,依此类推。

我有以下代码:

var poller = new Poller (client) { PollTimeout = 10 };

while (true)
{                    
    for (var poll = 0; poll < 100; poll++)
    {
       poller.PollOnce ();
    }

    do_something;
}

我面临的问题是,在那个轮询期间,Client.ReceiveReady 事件没有被触发,即使消息已准备好被接收。并引发 InvalidOperationException 说明 Poller is started

知道我做错了什么吗?

首先尝试使用版本 3.3.0.12-rc1,它修复了很多问题,可能也是您遇到的问题。

关于 do_something,我建议使用 NetMQTimer 而不是 PollOnce(改为使用 PollTillCanceled)。您还可以使用 NetMQScheduler 来做一些事情。