尽管有可用消息,但不会触发Socket.ReceiveReady

时间:2015-01-28 13:19:18

标签: poller netmq

我已经开始探索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

知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

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

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